引用依赖文件
修改项目对应pom.xml文件,增加mybatis generator依赖
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
配置maven生成命令
在pom.xml中增加build结点,并且通过mybatis逆向工程,配置插件支持自动生成命令
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
<configuration>
<!--允许移动生成的文件 -->
<verbose>true</verbose>
<!-- 是否覆盖 -->
<overwrite>true</overwrite>
<!-- 自动生成的配置 -->
<configurationFile>
src/main/resources/generator/generator-config.xml
</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
支持Lombok
新建类 MyBatisPlugin 继承 PluginAdapter
public class MyBatisPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> list) {
return true;
}
@Override
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
// 配置开关,是否启用lombok注释
boolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));
System.out.println("hasLombok" + hasLombok);
if (hasLombok) {
// 添加domain的import
topLevelClass.addImportedType("lombok.Data");
// 添加domain的注解
topLevelClass.addAnnotation("@Data");
}
return true;
}
@Override
public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
// 添加Mapper的import
interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Mapper"));
// 添加Mapper的注解
interfaze.addAnnotation("@Mapper");
return true;
}
@Override
public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
IntrospectedTable introspectedTable, ModelClassType modelClassType) {
// 不生成getter
boolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));
return !hasLombok;
}
@Override
public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
IntrospectedTable introspectedTable, ModelClassType modelClassType) {
// 不生成setter
boolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));
return !hasLombok;
}
}
generator config配置文件
在resource目录下面,新建generator-config.xml文件添加以下内容
<?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>
<!--mysql 连接数据库jar 这里选择自己本地位置-->
<context id="MysqlContext" targetRuntime="MyBatis3">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- 指定生成 Mapper 的继承模板 -->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<!-- 配置Mapper需要集成的基类,这边是我重新封装的Mapper类,如果不需要则配置默认的都Mapper -->
<property name="mappers" value="com.tbb.idp.mapper.TkBaseMapper"/>
</plugin>
<!-- 支持lombok注释, 去掉set,get方法-->
<plugin type="com.tbb.idp.config.MyBatisPlugin" >
<property name="hasLombok" value="true"/>
</plugin>
<!-- 自动为entity生成swagger2文档-->
<plugin type="com.tbb.idp.mybatis.plugins.GeneratorSwagger2Doc">
<property name="apiModelAnnotationPackage" value="io.swagger.annotations.ApiModel"/>
<property name="apiModelPropertyAnnotationPackage" value="io.swagger.annotations.ApiModelProperty"/>
</plugin>
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库连接配置 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/idp-shop"
userId=""
password="">
<!-- 设置可以获取tables remarks信息 -->
<property name="useInformationSchema" value="true"/>
<!-- 设置可以获取remarks信息 -->
<property name="remarks" value="true"/>
</jdbcConnection>
<!-- 生成实体类 -->
<javaModelGenerator targetPackage="com.tbb.idp.entity" targetProject="src/main/java">
<property name="trimStrings" value="false"/>
<property name="enableSubPackages" value="true"/>
</javaModelGenerator>
<!-- 生成mapper对应xml -->
<sqlMapGenerator targetPackage="mapperXml" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成mapper文件 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.tbb.idp.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 指定生成的表 -->
<!-- 因为TkMybatis已经支持基础操作,因此不再需要对应Example方法,所以去掉生成 -->
<table tableName="test_a" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false" >
<generatedKey column="test" sqlStatement="Mysql" identity="true" type="post"/>
</table>
</context>
</generatorConfiguration>
生成方式
打开idea的Maven窗口,选择对应的项目之后,选择 Plugins -> mybatis-generator -> mybatis-generator:generate
双击之后等待一会,即可在上面配置的对应目录下面生成文件,例如src/main/entity下面生成实体类
生成结果
@ApiModel(value="测试")
@Table(name = "test_a")
@Data
public class TestA {
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(name = "test",value ="id")
private Integer test;
/**
* 名字
*/
@Column(name = "name_a")
@ApiModelProperty(name = "nameA",value ="名字")
private String nameA;
/**
* 金额
*/
@ApiModelProperty(name = "balance",value ="金额")
private BigDecimal balance;
}