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文件,它可以覆盖现有文件或使用不同的唯一名称保存新生成的文件(文件名后加1、2、3等序号)。
如果重复生成可以选择自动覆盖替换或手动合并更改。
二、引入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插件:
可以看到,我们的实体和mapper已经生成:
Bsin-PaaS(毕昇) 是一套企业级的低代码、零代码去中心化应用搭建平台,可帮助企业快速搭建有竞争力的业务中台、流程中台、业务前台。bsin-paas包括微前端设计、微服务框架、服务编排、工作流引擎、安全网关及区块链引擎。该方案由区块链(公链、联盟链)作为技术支撑,为企业提供daPaaS层的一站式解决方案,助力企业打造数字经济底层技术架构,构建一套开放式和生态化的技术体系。作为一个平台,Bsin-PaaS本身拥有自己的数字货币资产,以用户为中心,实现让价值掌握在拥有者手中。 all-in-one: Bsin-PaaS(毕昇) 是一套企业级的低代码、零代码去中心化应用搭建平台,可帮助企业快速搭建有竞争力的业务中台、流程中台、业务前台。 (gitee.com)