Spring Boot集成mybatis generator自动生成代码插件

1,720 阅读3分钟

Spring Boot集成mybatis generator自动生成代码插件

其实MyBatis Generator并不需要spring boot环境,只需要自己写一个main方法运行即可。本文主要介绍使用maven插件的方式。

注:本文采用的MyBatis Generator版本为:1.4.0

一、MyBatis Generator介绍

MyBatis Generator,缩写MBG,是一个Mybatis和iBatis的代码生成器。它支持Mybatis的所有版本,支持iBatis 2.2.0以后的版本。通过MyBatis Generator可以根据数据库表生成相应的实体、sql映射文件、Dao等,能应付简单的CRUD(Create, Retrieve, Update, Delete),对于连接查询或存储过程等还是要手动编写sql和对象。

MyBatis Generator将生成以下内容:

与表结构匹配的Java POJO。这可能包括:

一个关于表主键的类(如果表有主键)

一个关于表非主键字段的类(BLOB字段除外)

一个包含表BLOB字段的类(如果表有BLOB字段)

一个支持动态查询、修改和删除的类

MyBatis或iBATIS兼容的SQL映射XML文件。MBG为配置中指定的每个表的简单CRUD函数生成SQL,生成的SQL语句包括:

插入
通过主键更新
通过动态where子句更新
通过主键删除
通过动态where子句删除
通过主键查询
通过动态where子句查询
通过动态where子句查询条数

注意:上面的内容并不一定全部生成,比如:如果表没有主键,则不会生成通过主键删除等sql。

与MyBatis 3.x映射器基础结构配合使用的映射器接口 MBG将为iBATIS 2.x生成以下类型的Java类:

符合Spring框架的DAO
只使用iBATIS SQL映射API的DAO。这些DAO可以通过两种方式生成:通过构造函数或setter注入来提供SqlMapClient。
符合iBATIS DAO框架的DAO(这是iBATIS的一个可选部分,此框架已被弃用,所以建议改用Spring框架)

在迭代开发过程中使用MyBatis Generator的注意事项:

1、如果存在与新生成的XML文件具有相同名称的现有文件,MBG将自动合并XML文件,合并时,MBG不会覆盖你在XML文件中
添加的任何内容。你可以重复生成而不用担心丢失XML文件中你添加的内容,MBG只替换通过MBG生成的任何XML元素。

2、MBG不会合并Java文件,它可以覆盖现有文件或使用不同的唯一名称保存新生成的文件(文件名后加123等序号)。
如果重复生成可以选择自动覆盖替换或手动合并更改。

二、引入MyBatis Generator的maven插件

在pom.xml里添加以下内容:

<!-- mybatis generator 自动生成代码插件 -->
<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.4.0</version>
    <configuration>
        <configurationFile>${basedir}/src/main/resources/generator/mybatis-generator.xml</configurationFile>
        <overwrite>true</overwrite>
        <verbose>true</verbose>
    </configuration>
    <!-- 配置数据库链接及mybatis generator core依赖 生成mapper时使用 -->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.4.0</version>
        </dependency>
    </dependencies>
</plugin>

三、MyBatis Generator配置文件

<?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>
    <context id="gen" targetRuntime="MyBatis3" defaultModelType="flat">
        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>

        <commentGenerator>
            <!-- 指定生成的java文件的编码,没有直接生成到项目时中文可能会乱码 -->
            <property name="javaFileEncoding" value="UTF-8"/>
            <!-- 这个元素用来去除指定生成的注释中是否包含生成的日期 false:表示保护 -->
            <!-- 如果生成日期,会造成即使修改一个字段,整个实体类所有属性都会发生变化,不利于版本控制,所以设置为true -->
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--数据库链接URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.01:3306/digita_asset"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!-- 类型转换 -->
        <javaTypeResolver>
            <!-- 是否使用BigDecimals,false可自动转化以下类型(Long Integer Short等) -->
        <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成模型的包名和位置 -->
        <javaModelGenerator targetPackage="me.flyray.bsin.server.domain" targetProject="src\main\java">
            <!--<property name="constructorBased" value="true" />
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>-->
        </javaModelGenerator>

        <!-- 生成映射文件的包名和位置 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src\main\resources">
            <!--<property name="enableSubPackages" value="true"/>-->
        </sqlMapGenerator>

        <!-- 生成mapper接口 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="me.flyray.bsin.server.mapper" targetProject="src\main\java">
            <!-- <property name="enableSubPackages" value="true"/>-->
        </javaClientGenerator>

        <!-- 要生成哪些表 可以同时填写多个table-->
        <table tableName="damp_account_info"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>

四、运行maven插件:

image.png

可以看到,我们的实体和mapper已经生成:

image.png

Bsin-PaaS(毕昇) 是一套企业级的低代码、零代码去中心化应用搭建平台,可帮助企业快速搭建有竞争力的业务中台、流程中台、业务前台。bsin-paas包括微前端设计、微服务框架、服务编排、工作流引擎、安全网关及区块链引擎。该方案由区块链(公链、联盟链)作为技术支撑,为企业提供daPaaS层的一站式解决方案,助力企业打造数字经济底层技术架构,构建一套开放式和生态化的技术体系。作为一个平台,Bsin-PaaS本身拥有自己的数字货币资产,以用户为中心,实现让价值掌握在拥有者手中。 all-in-one: Bsin-PaaS(毕昇) 是一套企业级的低代码、零代码去中心化应用搭建平台,可帮助企业快速搭建有竞争力的业务中台、流程中台、业务前台。 (gitee.com)