MyBatis Generator配置详解及运行

详细配置介绍

MBG操作行为主要是靠配置文件进行驱动的,配置文件可以告诉MBG如下内容:

  • 如何连接数据库。(数据库配置信息)
  • 哪些对象需要被创建,以及如何去创建他们。
  • 使用数据库中的哪些表来生成文件对象。

下面列举出一些常用的配置参数及介绍:

<!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="lib/mysql-connector-java-5.1.9.jar"/>

    <!--运行环境,此处我们使用MyBatis3-->
    <context id="dsql" targetRuntime="MyBatis3">
        <!--================================↓注释配置相关↓======================================-->
        <!--注释构造器相关属性-->
        <commentGenerator>
            <!--是否覆盖注释添加时间,true:删除时间,false:保留时间(默认值)-->
            <property name="suppressDate" value="false"/>
            <!--是否添加数据库字段注释。注意如果suppressAllComments为true的话,该属性将不起作用-->
            <property name="addRemarkComments" value="true"/>
            <!--是否删除所有注释,true:删除所有注释,false:保留所有注释(默认值)-->
            <property name="suppressAllComments" value="false"/>
            <!--注释中自动添加的时间日期格式-->
            <property name="dateFormat" value="YYYY-MM-dd HH:mm:ss"/>
        </commentGenerator>
        <!--=================================↑注释配置相关↑======================================-->
        

        <!--================================↓数据库连接信息↓======================================-->
        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/shop?characterEncoding=utf-8"
                        userId="root"
                        password="123456"/>
        <!--================================↑数据库连接信息↑======================================-->
        
        <!--================================↓Generator配置相关↓======================================-->
        <!--Model(POJO)类构造器, targetPackage是包名,targetProject是项目路径,
        注意如果targetProject目录不存在的话MBG不会自动创建-->
        <javaModelGenerator targetPackage="com.sanmianti.output.pojo"
                            targetProject="src\main\java">
            <!--是否将数据库schema名称作为子包名,即targetPackage+schema名称构成包名
            todo 2020年7月11日17:41:38 这个属性值未起作用,不知为何-->
            <property name="enableSubPackages" value="true"/>
            <!--是否要裁剪掉字符串两端的空格。其实就是在Model里的set和get方法里面增加String.trim()调用-->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        
        <!--Mapper接口类XML映射文件构造器-->
        <sqlMapGenerator targetPackage="com.sanmianti.output.mapper"
                         targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--Mapper接口构造器-->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.sanmianti.output.dao"
                             targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!--================================↑Generator配置相关↑======================================-->
        
        <!--================================↓table配置相关↓======================================-->
        <!--数据库表名-->
        <table tableName="product"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false">
            <!--插入时自增字段值回写,调用Mapper插入一条数据后,
            能从当前这个Entity中获取到自增的字段值-->
            <generatedKey column="product_id"
                          sqlStatement="Mysql"
                          identity="true"/>

            <!--重命名POJO类名,此处根据表名生成的类名将由Product重命名为Product-->
            <domainObjectRenamingRule searchString="Product"
                                      replaceString="Product"/>

            <!--重命名数据库字段值,此处会将数据表字段名中所有的"_id"替换为"_id"-->
            <columnRenamingRule searchString="_id"
                                replaceString="_id"/>

            <!--重命名生成POJO类属性名或修改数据类型,此处sale_price这一列对应的POJO属性名将被替换为price,
            数据类型将被修改为Long类型-->
            <columnOverride column="sale_price"
                            property="price"
                            javaType="Long"/>

            <!--指定表中哪些字段将被忽略掉,符合pattern正则的字段都将被忽略掉-->
            <ignoreColumnsByRegex pattern="(?i)col.*">
                <!--如下几个字段是例外情况,不会被忽略-->
                <except column="col01"/>
                <except column="col13"/>
            </ignoreColumnsByRegex>

            <!--指定表中哪些字段将被忽略掉,与ignoreColumnsByRegex属性值功能相同。-->
            <ignoreColumn column="product_name_"/>
        </table>
        <!--================================↑table配置相关↑======================================-->
    </context>
</generatorConfiguration>

通过java代码执行(推荐)

  • 下载集成好的IDEA java项目。MyBatisGeneratorProxy (该项目集成了MBG jar包、配置文件、及数据库驱动jar包等必要工具)
  • 修改generatorConfig.xml配置文件中数据库连接信息。
  • 根据需要定制 generatorConfig 其他相关属性。
  • 执行ProxyEntrance#main函数。

通过IDEA + GIT 可以给予我们的工具以更好的项目管理,例如针对不同的库创建不同的配置文件。所以推荐使用该方式来执行MyBatis Generator。

通过command命令执行

  • 下载集成好的工具集。(该工具集集成了MBG jar包、配置文件、及数据库驱动jar包等)
  • 修改generatorConfig.xml配置文件中数据库连接信息。
  • 根据需要定制 generatorConfig 相关属性。
  • 进入文件夹执行如下命令:
C:\Users\zlm\Desktop\MBG>java -jar .\mybatis-generator-core-1.4.0\lib\mybatis-generator-core-1.4.0.jar  -configfile .\generatorConfig.xml -overwrite

通过命令行运行 MBG的 一些可选参数:

Argument是否必需解释说明
-configfile file_name必需用以指定配置信息
-overwrite可选用以表示是否覆盖已有文件。如果未指定该属性值的,并且指定目录内存在同名Java文件,MGB将会使用数字后缀生成新的名字,如MyClass.java.1, MyClass.java.2等。特别需要注意的是,针对XML文件,无论是否指定该属性值,MGB都会选择合并操作
-verbose可选用以打印详细日志信息
-tables table1, table2,…可选当配置文件中存在多个数据库表时,此处用于指定本次执行操作哪几张表。注意此处指定的表名要和配置文件中配置的表名一致。

参考文献

MyBatis Generator 官方网站

MyBatis Generator 为什么不支持批量插入代码生成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值