mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间,今天自己研究了一下,也分享一下使用心得供大家简单使用。

本人使用的是maven工程,首先需要在pom.xml文件添加mybatis-generator依赖包以及插件,配置如下:

第一步:在pom.xml文件dependencies中添加mybatis-generator依赖:

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.4.0</version>
</dependency>

第二步:在pom.xml文件build的plugins中添加加载的配置文件路劲:

需要特别注意的是:在IDEA开发环境下,这个文件需要放置在resources的根目录下面

           <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
<!--                mybatis.generator需要依赖的数据库驱动-->
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                      	<version>8.0.23</version>
                    </dependency>
                </dependencies>

                <!--                    mybatis用于生成代码的配置文件路径-->
                <configuration>
                    <configurationFile>src/main/resources/config/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>

第三步:上面就是pom.xml中需要添加的配置,接下来就是generatorConfig.xml文件的简单介绍

  1. 注意修改配置文件中 pojo类的包
  2. 注意修改配置文件中 mapper的包以及mapper配置文件包(一般放在一起)
  3. 注意修改配置文件中 需要逆向工程表的名字
  4. 如果需要pojo类实现Serializable接口,解开注释!
  5. 请在Springboot 配置文件中增加Resources 资源拷贝插件,否则maven打包时,不会将src/main/java/下的 mapper文件打包到classpath下,后续程序运行会报错
  6. 如果dtd 文件不存在,请自行导入!

配置文件: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>
<!--    JDBC驱动文件-->
<!--    <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />-->

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 生成的Java文件的编码-->
        <property name="javaFileEncoding" value="UTF-8"/>
        <!-- JavaBean 实现 序列化 接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true 时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
        <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>

        <!--数据库链接信息:驱动类,URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/myTest?useUnicode=true"
                        userId="root"
                        password="gq861204.">
        </jdbcConnection>

        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 生成实体模型的包名和位置-->
        <javaModelGenerator targetPackage="com.example.entity"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成mapper.xml映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="mapping"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 生成mapper.java接口的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <table  tableName="role" domainObjectName="Role" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
                enableSelectByExample="false" selectByExampleQueryId="false">
        </table>

    </context>
</generatorConfiguration>


在配置文件的table元素中 tableName就是数据库的表名

第四步:根据数据库表反向生成测试
在这里插入图片描述

Logo

一站式 AI 云服务平台

更多推荐