MyBatis Generator(逆向工程)笔记总结

一、简介

MyBatis GeneratorMBG)是MyBatis iBATIS的代码生成器。它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写SQL和对象代码。

上面这个是官网的简介,简单理解就是一个代码生成器插件,MyBatis逆向工程,就是通过相应插件,自动生成MyBatis操作数据库的一些文件。

  使用mybatis框架的开发方式有两种,可以通过编写xml文件或者使用注解进行开发,需要编写sql语句,mybatis官方提供逆向工程,面向的是使用xml文件的开发方式,可以针对数据库单表操作自动生成mybatis执行所需要的代码(mapper.java(接口)、mapper.xml(sql配置文件)、pojo(实体类)…),提高工作效率。

MyBatis Generator官网:http://mybatis.org/generator/

二、使用

2.1 在pom.xml中导入所需jar包依赖和插件依赖

使用mybatis逆向工程,自然少不了mybatis依赖的支持,下面是需要在工程中导入的依赖

    <dependencies>
        <!-- mybatis依赖  -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.7</version>
        </dependency>
        <!-- 逆向工程核心包  -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- 这个是日志依赖包,这个不是必须 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- mysql数据库驱动依赖  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.8</version>
        </dependency>
    </dependencies>

2.2 在工程resources文件夹下新建generatorConfig.xml文件

  • 命名规范说明

这个配置文件是使用逆向工程必须的,命名规范一般命名为mybatis-generator.xml或者generatorConfig.xml,当然这个文件命名不是必须要求这样,但是内容是必须按照官网开发文档的规范

注意:

  • 1.逆向工程的默认配置下,generatorConfig.xml文件必须放在resources文件夹下才能读取到

  • generatorConfig.xml内容

配置参数详细请参考官网:http://mybatis.org/generator/configreference/xmlconfig.html

这里配置要点是:数据库连接信息、mapper映射文件生成的位置、mapper接口生成的位置、指定对应的数据库表名,至于其他的参数可根据自己的开发需求参照官网进行配置

<?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>
    <!--引入properties文件-->
    <properties resource="mybatis/jdbcConfig.properties"></properties>
    <!--mysql的本地jar包引入-->
    <classPathEntry
            location="D:\maven_repository\.m61\mysql\mysql-connector-java\5.1.8\mysql-connector-java-5.1.8.jar"/>
    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}" userId="${jdbc.user}"
                        password="${jdbc.password}">
        </jdbcConnection>
        <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
            userId="yycg"
            password="yycg">
        </jdbcConnection> -->

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

        <!-- targetProject:生成数据库表对应的实体类的位置 -->
        <javaModelGenerator targetPackage="cn.poison.pojo"
                            targetProject=".\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mybatis.mapper"
                         targetProject=".\src\main\resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.poison.mapper"
                             targetProject=".\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table tableName="account"></table>
        <table tableName="role"></table>
        <table tableName="user"></table>
        <table tableName="user_role"></table>
        <!-- <table schema="" tableName="sys_user"></table>
        <table schema="" tableName="sys_role"></table>
        <table schema="" tableName="sys_permission"></table>
        <table schema="" tableName="sys_user_role"></table>
        <table schema="" tableName="sys_role_permission"></table> -->

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

注意:上面的配置文件使用了<properties>标签引入了外置properties文件,可在resources文件夹下创建jdbcConfig.properties文件,配置数据库连接信息

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/dbmybatis?useSSL=false&useUnicode=true&characterEncoding=utf8
jdbc.user=root
jdbc.password=111111

2.3 运行逆向工程,生成接口代码和mapper文件

2.3.1 启动方式一:使用java代码运行逆向工程

public class GeneratorTest {
    public static void main(String[] args){
        try {
            new GeneratorTest().generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //生成器方法
    public void generator() throws Exception{
        List<String> warning=new ArrayList<String>();
        boolean overwrite=true;
        //这里特别注意一下你的generatorConfig.xml文件的位置
        File configFile = new File("src\\main\\resources\\mybatis\\generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warning);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warning);
        myBatisGenerator.generate(null);
    }
}

2.3.2 启动方式二:添加generator的maven插件

  • 步骤一:在工程下的pom.xml文件下添加插件
<build>
        <plugins>
            <!--mybatis逆向工程自动生成mapper插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <!--指明generatorConfig.xml文件的位置,可以不配置,默认值为src/main/resources/generatorConfig.xml-->
                    <configurationFile>src/main/resources/mybatis/generatorConfig.xml</configurationFile>
                    <!--在控制台打印执行日志,将进度消息写进构建日志-->
                    <verbose>true</verbose>
                    <!--覆写:现有Java文件的名称与生成的文件的名称相同时,则现有Java文件将被覆盖-->
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <!--添加tk.mybatis的依赖-->
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>3.1.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
  • 这里需要注意一下:

上面添加的插件在Configuration标签中配置了generator的位置信息,所以tk.mybatis的依赖也必须添加在插件下,否则报错

  • 步骤二:在generatorConfig.xml文件中添加mysql本地依赖

网上有些博客说这个配置可有可无,但是我测试了下,如果在maven插件配置了generatorConfig.xml文件的位置和添加了tk.mybatis的依赖,这里的配置必不可少,否则报错,其中的原因暂时不太清楚,如果有知道原因的小伙伴,可在评论指点下

  • 步骤三:直接点击maven的generator插件运行即可

2.3.3 启动方式三:其实就是简化版的启动方式二(相当于使用逆向工程默认配置)

  • 步骤一:直接把generatorConfig.xml文件放在resources文件夹下(不用在配置文件中添加本地mysql的ar包)
<?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>
    <!--引入properties文件-->
    <properties resource="mybatis/jdbcConfig.properties"></properties>
    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}" userId="${jdbc.user}"
                        password="${jdbc.password}">
        </jdbcConnection>
        <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
            userId="yycg"
            password="yycg">
        </jdbcConnection> -->

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

        <!-- targetProject:生成数据库表对应的实体类的位置 -->
        <javaModelGenerator targetPackage="cn.poison.pojo"
                            targetProject=".\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mybatis.mapper"
                         targetProject=".\src\main\resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.poison.mapper"
                             targetProject=".\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table tableName="account"></table>
        <table tableName="role"></table>
        <table tableName="user"></table>
        <table tableName="user_role"></table>
        <!-- <table schema="" tableName="sys_user"></table>
        <table schema="" tableName="sys_role"></table>
        <table schema="" tableName="sys_permission"></table>
        <table schema="" tableName="sys_user_role"></table>
        <table schema="" tableName="sys_role_permission"></table> -->

        <!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>
  • 步骤二:在pom.xml中添加maven插件
        <plugin>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.4.0</version>
        </plugin>
  • 步骤三:点击插件运行

其实官网还有其他的启动方式,可以根据需求在参考官网进行配置,我这里介绍的是java常用的两种逆向工程的使用方式,对自己学习使用做的一个笔记,其实逆向工程可以整合SpringBoot等等一下微服务框架进行使用,主要用于简化代码,提供效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值