mybatis-generator插件的用法介绍

mybatis-generator是一款在使用mybatis框架时,根据我们的数据库表,自动生成对应model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间,接下来我们来了解它的用法。

在pom.xml中添加插件
<plugins>
	<plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.7</version>
        <configuration>
            <!--配置文件存放的位置,一般不用配置,它会自动到这个位置去寻找-->
            <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
            <!--是否覆盖,新生成的mapper接口\java类\mapper文件会覆盖老的-->
            <overwrite>true</overwrite>
         </configuration>
     </plugin>   
</plugins>
配置generatorConfig.xml文件
  • 只需要把generatorConfig.xml放在maven工程的src/main/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>
    <!-- 在MBG工作的时候,需要额外加载的依赖包
       location属性指明加载jar/zip包的全路径,注意版本-->
    <classPathEntry location="C:\Users\L7832\Desktop\project\mysql-connector-java-8.0.17.jar" />

    <context id="DB2Tables" targetRuntime="MyBatis3">

        <!--不再追加xml内容,我们在插件中设置了新生成的mapper接口\java类\mapper文件会覆盖老的,
        但是我们发现mapper.xml文件并不是覆盖,而是追加 。因为只有加了下面这个插件后才能覆盖-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />

        <!--当suppressAllComments设置为true的时候,生成的文件中就不会有注解了,使得代码更清爽-->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- 必须要有的,使用这个配置链接数据库-->
       <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                       connectionURL="jdbc:mysql://127.0.0.1:3306/mall?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai&amp;useSSL=false"
                       userId="root"
                       password="4589856">
           <!--解决mysql8.x驱动会生成用户下多个库下表的问题,true表示只生成connectionURL指定数据库下的表,而不是userId用户能看到的所有数据库中同名的表。
           例如:root用户下有db1和db2两个数据库,这两个库中都有tb_user表,当nullCatalogMeansCurrent设置为false时,
           尽管connectionURL指定的是db1数据库,但是db2数据库中的tb_user表同样也会生成对应的实体类-->
           <property name="nullCatalogMeansCurrent" value="true"/>
       </jdbcConnection>

        <!-- java类型处理器
            用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
            注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;
        -->
       <javaTypeResolver >
           <!--
                true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
                false:默认,
                    scale>0;length>18:使用BigDecimal;
                    scale=0;length[10,18]:使用Long;
                    scale=0;length[5,9]:使用Integer;
                    scale=0;length<5:使用Short;
             -->
           <property name="forceBigDecimals" value="false" />
       </javaTypeResolver>

        <!-- java模型创建器,是必须要的元素(创建java类)
            targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;
            targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录(不用改)
            targetProject/targetPackage就是我们要生成的java类放在哪个目录下(src/main/java/com.lxc.mall.pojo)
         -->
       <javaModelGenerator targetPackage="com.lxc.mall.pojo" targetProject="src/main/java">
           <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
           <property name="enableSubPackages" value="true" />
           <!--因为我一般使用Lombok来生成getter\setter,所以不要这个设置-->
           <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
           <!--<property name="trimStrings" value="true" />-->
        </javaModelGenerator>


        <!-- 生成SQL map的XML文件生成器(创建mapper文件)
            targetPackage/targetProject就是我们要生成的mapper文件放在哪个目录下(src/main/resources/mapper)
         -->
        <sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>


        <!-- 生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口
            targetPackage/targetProject:同javaModelGenerator
            type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
                1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
                2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
                3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
            注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.lxc.mall.dao"  targetProject="src/main/java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- tableName:数据表名字  domainObjectName:java类名 enable***ByExample:这些都是生成跟分页有关的东西,我们不需要自动生成这些,把这4个属性设置为false-->
        <table tableName="mall_shipping" domainObjectName="Shipping" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false">
        	<!--这个字段在数据库中是text类型,我们必须为它重新设置类型,才能使数据库中字段都映射生成在一个pojo类中-->
			<columnOverride column="detail" jdbcType="VARCHAR" />        
        </table>

    </context>
</generatorConfiguration>

这里只罗列了日常使用的配置,其实只要这些也足够。详细配置参考Mybatis Generator最完整配置详解

使用命令执行插件

在项目根目录下执行mvn mybatis-generator:generate命令,这个命令可以在cmd中执行,也可以直接在IDEA的Terminal窗口中执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值