java split 反向 java反向工程_mybatis逆向工程


未命名前言

为什么要学逆向工程,这是我之前觉得非常没必要学的,自己能够写相关mysql语句,能够写对应接口,为啥还要学习这个。但是自从我接触了一个大项目开始,改变了这个想法,数据库庞大,涉及的表非常多的情况下,逆向工程简直太棒了。只要搭建好逆向工程,只需要点击运行,就可以把数据库里面的所有表自动生成接口、映射文件和对象(俗称pojo)。目前,所有接口只支持单表操作,但也是非常不错了,极大的提高了效率。

什么是逆向工程

简单的理解,Mybatis逆向工程,就是通过官方插件,自动生成Mybatis数据库连接的一些文件。Mybatis需要编写sql语句,Mybatis官方提供逆向工程,可以针对单表自动生成Mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),提高工作效率。

如何搭建逆向工程

在本文中,涉及到逆向工程的相关描述比较少,步骤也相对较简单,所以会有大量的截图和代码展示,方便复制粘贴。

  1. 首先准备数据库

搭建数据库,数据库名、表名和字段名自拟。参考如下:


java split 反向 java反向工程_java split 反向_02


2. 通过Maven搭建逆向工程

这里采用Maven工程,原因是比较方便,不用下载相应的jar包,只需通过在pom.xml文件中引用的形式添加即可。

第一步:创建Maven工程

第二步:在pom.xml文件中,添加Mybatis逆向工程生成器的jar包和数据库连接工具的jar包。


<!-- 逆向工程生成器 -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
        <!-- MySql 连接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>


第三步:在工程目录的resources资源目录下创建配置文件,名字自拟。并修改文件为如下内容,参照注释自行修改相关配置。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=UTC" userId="root"
                        password="5201314">
        </jdbcConnection>

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.demon.pojo"
                            targetProject=".srcmainjava">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="com.demon.dao"
                         targetProject=".srcmainjava">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.demon.dao"
                             targetProject=".srcmainjava">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table schema="" tableName="teacher"/>
        <table schema="" tableName="student"/>

        <!-- 有些表的字段需要指定java类型
        <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>


第四步:创建执行脚本Main.java,注意File访问路径为配置文件全路径。


public static void main(String[] args){
        try {
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            //指定 逆向工程配置文件
            File configFile = new File("D:JavaProjectsreverseprojectsrcmainresourcesSqlMapConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings);
            myBatisGenerator.generate(null);
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }


第五步:执行脚本Main.java,会自动生成映射文件、接口文件和pojo等,参考工程目录如下:


java split 反向 java反向工程_mybatis逆向工程用的多吗_03


注:为了方便后期使用,建议把Mapper接口目录和Mapper.xml映射文件生成到相同目录下。

未完待续内容

上面是关于逆向工程搭建的全部内容,实际上也非常简单,相关配置的版本请自行选择,但是我之前选择的mybatis-generator-core的jar包版本为1.4.0貌似有问题,改为1.3.7版本的就可以了,总的来说还是非常方便。除了上面内容,我还整理了关于逆向工程生成的接口使用方法,因为太多,我没有写出来,可以点击下面链接,进行查看。

Java后台开发Mybatis逆向工程实操 - 百度文库wenku.baidu.com

java split 反向 java反向工程_mybatis逆向工程用的多吗_04


最后的最后

一句座右铭与大家共勉----------幸运成就一时,努力成就一世。