MyBatis 逆向工程——根据数据表自动生成model、xml映射文件、mapper接口

MyBatis  逆向工程——根据数据表自动生成model、xml映射文件、mapper接口

 

MyBatis Generator(MBG)的使用

MBG可以根据数据表生成对应的model、xml映射文件、mapper接口,只是简单的生成,还需要根据需求修改。

 

1、下载jar包

https://github.com/mybatis/generator/releases

解压后有3个jar包,只使用一个:

 

 

2、新建一个新的java项目,导入mybatis.jar、mybatis-generator-core.jar、数据库驱动。

 

 

3、src下新建config.xml

http://mybatis.org/generator/configreference/xmlconfig.html

到官网复制xml文档,修改如下:

<?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>
    <!--  配置数据库连接的包,我们不需要,将其注释掉 -->
<!--    <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />-->

    <!-- context配置环境 -->
    <context id="myMBG" targetRuntime="MyBatis3">

        <!--配置生成的注释-->
        <commentGenerator>
            <!-- 去掉注释 -->
            <property name="suppressAllComments" value="true"/>
            <!-- 去掉注释中的时间戳 -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- 数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT"
                        userId="chy"
                        password="abcd">
        </jdbcConnection>

        <!-- 配置jdbc——java之间的类型转换 -->
        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 配置pojo类的生成规则 -->
        <javaModelGenerator targetPackage="com.chy.model" targetProject="src">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 配置xml映射文件的生成规则 -->
        <sqlMapGenerator targetPackage="com.chy.mapper"  targetProject="src">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 配置mapper接口的生成规则 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.chy.mapper"  targetProject="src">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 配置要使用的数据表,自带的配置太繁琐,将其注释掉-->
        <table tableName="user_tb"/>
        <table tableName="goods_tb"/>
<!--        <table schema="my_db" tableName="ALLTYPES" domainObjectName="Customer" >-->
<!--            <property name="useActualColumnNames" value="true"/>-->
<!--            <generatedKey column="ID" sqlStatement="DB2" identity="true" />-->
<!--            <columnOverride column="DATE_FIELD" property="startDate" />-->
<!--            <ignoreColumn column="FRED" />-->
<!--            <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->
<!--        </table>-->

    </context>
</generatorConfiguration>

红字部分是需要修改的。主要是修改数据库的连接信息、文件的生成位置。

xml文件的详细配置可参考官方文档:http://mybatis.org/generator/configreference/xmlconfig.html

 

 

4、src下新建主类test.Test

http://mybatis.org/generator/running/runningWithJava.html    

到官网复制代码来改, 注意是xml那个,修改如下:

package test;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/config.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);
    }
}

只需注意xml文件的路径是否正确。

 

 

5、运行主类,将生成的文件复制到要使用的项目中,根据需要修改。

 

 

只能生成简单的代码,复杂的还需要自己写,比如关联查询。

文件名可随意取,只要xml文件路径对得上即可。常用generatorConfig.xml、Generator.java,觉得难写可以使用简单的单词代替。

 

 

官网:http://mybatis.org/generator/index.html

github:https://github.com/mybatis/generator

带GUI的代码生成器:https://github.com/zouzg/mybatis-generator-gui