mybatis-generator 整合lombok

使用Lombok工具可以在生成实体类时省掉getter/setter以及构造方法等等代码,使得代码整体更加简洁优雅。在使用MyBatis时,可以利用generator映射数据库反向生成相对应得实体类以及mapper接口和mapper.xml文件。
这实现过程的关键是需要自己继承接口自定义一个插件实现类。
准备工作:
数据库建表sql语句(这里本人用的是MySQL5.7):

CREATE TABLE `users` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `cost` decimal(12,4) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

代码:
pom.xml文件(引入org.mybatis.generator依赖以及配置插件,这里用的是MySQL5.7版本,若是MySQL8版本,自行搜索相应的依赖)
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.0 org.mybatis.generator mybatis-generator-core 1.3.7 org.mybatis.generator mybatis-generator-maven-plugin 1.3.7 ${basedir}/src/main/resources/generator/generatorConfig.xmltrue true mysql mysql-connector-java 5.1.45

继承接口自定义的插件类:
package org.mybatis.generator.plugins; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import org.mybatis.generator.api.dom.java.Interface; import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.TopLevelClass; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; public class LombokPlugin extends PluginAdapter { public LombokPlugin() { }public boolean validate(List list) { return true; }public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { topLevelClass.addImportedType("lombok.Data"); topLevelClass.addAnnotation("@Data"); //topLevelClass.addImportedType("lombok.Getter"); //topLevelClass.addImportedType("lombok.Setter"); //topLevelClass.addImportedType("lombok.ToString"); //topLevelClass.addAnnotation("@Getter"); //topLevelClass.addAnnotation("@Setter"); //topLevelClass.addAnnotation("@ToString"); topLevelClass.addJavaDocLine("/**"); topLevelClass.addJavaDocLine("* Created by Mybatis Generator " + this.date2Str(new Date())); topLevelClass.addJavaDocLine("*/"); return true; }public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { interfaze.addJavaDocLine("/**"); interfaze.addJavaDocLine("* Created by Mybatis Generator " + this.date2Str(new Date())); interfaze.addJavaDocLine("*/"); return true; }public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { return false; }public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { return false; }private String date2Str(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); return sdf.format(date); } }

注意包名为package org.mybatis.generator.plugins;
然后用idea工具编译成.class字节码,把编译好的class文件复制粘贴到pom文件的依赖mybatis-generator-core的plugins文件下
mybatis-generator 整合lombok
文章图片

mybatis-generator 整合lombok
文章图片

最后在generatorConfig.xml文件配置(注意各个标签的顺序)

结果:
在idea打开maven窗口点击plugins中的mybatis-generator插件mybatis-generator 整合lombok
文章图片

可看到控制台输出执行成功信息:
mybatis-generator 整合lombok
文章图片

然后在定义的工程目录下可看到生成的实体类以及相关的mapper等:
生成的User实体类(这里的Parent为自定义的父类):
mybatis-generator 整合lombok
文章图片

mapper:
mybatis-generator 整合lombok
文章图片

对应mappper的xml文件:
mybatis-generator 整合lombok
文章图片

附上详细的generatorConfig.xml文件配置信息:
也可参考官网文档

也可以直接用简单的配置信息版本(也就是本案例的配置文件):

【mybatis-generator 整合lombok】本例表结构:
mybatis-generator 整合lombok
文章图片

    推荐阅读