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.xml
                    
                    true
                    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_第1张图片
mybatis-generator 整合lombok_第2张图片

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

结果:
在idea打开maven窗口点击plugins中的mybatis-generator插件mybatis-generator 整合lombok_第3张图片
可看到控制台输出执行成功信息:
mybatis-generator 整合lombok_第4张图片
然后在定义的工程目录下可看到生成的实体类以及相关的mapper等:
生成的User实体类(这里的Parent为自定义的父类):
mybatis-generator 整合lombok_第5张图片
mapper:
mybatis-generator 整合lombok_第6张图片
对应mappper的xml文件:
mybatis-generator 整合lombok_第7张图片

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




    

    
    

    
    

    
    
    

        
        
        
        
        
        
        
        
        
        
        

        
        
          

        
        
            
            
            
            
        

        
        

        
        
            
            
        

        
        
            
            
            
            
            
            
        

        
        
            
            
        

        
        
            
        

        
        

            
            

            
            

            

            

            

            

            

            
            

            
            


            

            


            
            
                
                
                

                

                

                
            

            
        

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





    

        
        
         
        
          

        
        

        
        
        

        
        
        

        
        
        

        

本例表结构:
mybatis-generator 整合lombok_第8张图片

你可能感兴趣的:(MyBatis)