前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis-generator在命令行及IDEA中的使用

mybatis-generator在命令行及IDEA中的使用

作者头像
jinjunzhu
发布2020-08-20 16:02:49
1.6K0
发布2020-08-20 16:02:49
举报
文章被收录于专栏:个人开发个人开发

项目中的mybatis文件,在数据库表字段多的时候,手工编写还是比较费时,而且是体力活,并没有技术能力提高。所以我们大多数时候使用mybatis-generator自动生成。使用这个工具,必须使用如下3个工具:

1.工具jar包,本文使用mybatis-generator-core-1.3.2.jar

代码语言:javascript
复制
<dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>
代码语言:javascript
复制

2.xml配置文件,本文使用mybatis-config.xml

3.数据库驱动,本文使用mysql-connector-java-8.0.16.jar

代码语言:javascript
复制
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
代码语言:javascript
复制

其中最重要的是配置mybatis-config.xml,先看一个代码:

代码语言:javascript
复制
<?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驱动jar包的位置-->
    <classPathEntry location="D:/Users/jinjunzhu/.m2/repository/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar"/>

    <context id="default" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 :false:否 -->
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=UTC" userId="root" password="123456">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--生成Model类存放位置-->
        <javaModelGenerator targetPackage="com.test.dao.model" targetProject="C:/Users/jinjunzhu/3D Objects/Desktop">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="com.test.dao.xml" targetProject="C:/Users/zhujinjun/Desktop">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao类存放位置-->
        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.test.dao.mapper" targetProject="C:/Users/zhujinjun/Desktop">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaClientGenerator>
        <table tableName="db_user" domainObjectName="dbUser" enableDeleteByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableSelectByPrimaryKey="true" enableUpdateByExample="false" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"></table>
    </context>
</generatorConfiguration>

从上到下依次解释一下参数:

代码语言:javascript
复制
classPathEntry:配置jdbc驱动包
commentGenerator:注解相关配置
classPathEntry:配置jdbc驱动包
commentGenerator
   suppressDate:是否自动去除注释时间戳
   suppressAllComments:是否去除自动生成的注释
jdbcConnection:复制配置文件中的jdbc配置就可以
forceBigDecimals:是否强制把数据库中的decimal类型和number类型转换为BigDecimal
javaModelGenerator:生成model的存放位置
sqlMapGenerator:生成xml文件的存放位置
javaClientGenerator:生成mapper接口文件的位置,type类型有如下选择:
    ANNOTATEDMAPPER,生成Java Model 和基于注解的Mapper对象
    MIXEDMAPPER,生成基于注解的Java Model 和相应的Mapper对象
    XMLMAPPER,生成SQLMap XML文件和独立的Mapper接口
table:要自动生成的表
    tableName为数据库中表的名称,domainObjectName为映射的实体类的名称-->
    schema:数据库的schema;
    catalog:数据库的catalog;
    alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
    domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
    enableInsert(默认true):指定是否生成insert语句;
    enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
    enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
    enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);
    enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);
    enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
    enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
    enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
    modelType:参考context元素的defaultModelType,相当于覆盖;
    delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
    delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性

配置好后,执行如下命令,就可以生成了:命令中的路径可以根据本地配置进行修改

代码语言:javascript
复制
java -jar D:\Users\jinjunzhu\.m2\repository\org\mybatis\generator\mybatis-generator-core\1.3.2\mybatis-generator-core-1.3.2.jar -configfile "E:\source code\springboot-rabbitmq\repository\src\main\resources\mybatis-generator.xml" -overwrite

我们可以在IDEA中进行配置,配置如下:在Run->Edit Configurations

配置好之后,执行下图的运行,或者执行命令:

代码语言:javascript
复制
mvn mybatis-generator:generate -e

执行上面命令后,生成文件如下图:

源码地址:

https://github.com/jinjunzhu/springboot-rabbitmq

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 jinjunzhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档