MybatisGenerator + Lombok 自動生成的domain再也沒有一堆Getter/Setter方法了

使用Mybatis的小伙伴對Generator一定非常熟悉, 在這里我便不多做介紹了.

但generator自動生成的domain.java里面默認帶有了所有get/set方法, 讓人眼花繚亂.

如何讓生成domain沒有get/set方法, 同時自動貼上lombok的幾個常用標簽呢.
話不多說, 下面直接開始.

首先, 先繼承Mybatis的插件適配器, 寫一個自己的插件
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;

/**
 * @author Liweizhou  2018/6/6
 */
public class LombokPlugin extends PluginAdapter {

    @Override
    public boolean validate(List<String> list) {
        return true;
    }

    @Override
    public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
        //添加domain的import
        topLevelClass.addImportedType("lombok.Data");
        topLevelClass.addImportedType("lombok.Builder");
        topLevelClass.addImportedType("lombok.NoArgsConstructor");
        topLevelClass.addImportedType("lombok.AllArgsConstructor");

        //添加domain的注解
        topLevelClass.addAnnotation("@Data");
        topLevelClass.addAnnotation("@Builder");
        topLevelClass.addAnnotation("@NoArgsConstructor");
        topLevelClass.addAnnotation("@AllArgsConstructor");

        //添加domain的注釋
        topLevelClass.addJavaDocLine("/**");
        topLevelClass.addJavaDocLine("* Created by Mybatis Generator on " + date2Str(new Date()));
        topLevelClass.addJavaDocLine("*/");

        return true;
    }

    @Override
    public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
        //Mapper文件的注釋
        interfaze.addJavaDocLine("/**");
        interfaze.addJavaDocLine("* Created by Mybatis Generator on " + date2Str(new Date()));
        interfaze.addJavaDocLine("*/");
        return true;
    }

    @Override
    public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        //不生成getter
        return false;
    }

    @Override
    public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        //不生成setter
        return false;
    }

    private String date2Str(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        return sdf.format(date);
    }
}

首先在本機編譯這份java文件, 生成的字節(jié)碼文件(.class), 先到maven倉庫的這個目錄

org\mybatis\generator\mybatis-generator-core\1.3.5 (版本無所謂, 根據(jù)自己情況修改)

找到這個mybatis-generator-core-1.3.5.jar文件
把字節(jié)碼塞到 jar包對應的包文件夾下面

generator.png

然后再mybatis-generator.xml配置文件中加上這句話

        <plugin type="org.mybatis.generator.plugins.LombokPlugin" >
            <property name="hasLombok" value="true"/>
        </plugin>

此時mybatis-generator.xml大概如下: 留意<plugin>標簽的位置, 我用的是pg, 直接復制粘貼的同學請修改成數(shù)據(jù)庫類型

<?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="postgresql" targetRuntime="MyBatis3">

        <plugin type="org.mybatis.generator.plugins.LombokPlugin" >
            <property name="hasLombok" value="true"/>
        </plugin>

        <!--關閉注釋 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--數(shù)據(jù)庫連接信息 -->
        <jdbcConnection driverClass="org.postgresql.Driver"
                        connectionURL=""
                        userId="" password="">
        </jdbcConnection>

        <!--生成的model 包路徑 -->
        <javaModelGenerator targetPackage="com.lwz.dao.generator.model"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaModelGenerator>


        <!--生成xml mapper文件 路徑 -->
        <sqlMapGenerator targetPackage="mapper/generator" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 生成的Dao接口 的包路徑 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.lwz.dao.generator.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--對應數(shù)據(jù)庫表名 -->
        <table tableName="example">
        </table>
        
    </context>
</generatorConfiguration>

然后生成一遍

/**
* Created by Mybatis Generator on 2018/06/06
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Example{

搞定啦.
偷懶的朋友可以到這里下載jar包,直接使用
MyBatis-Generator 自動生成Lombok標簽 不生成Get/Set方法-CSDN下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 最近一周的時間里面,讓我們生活在東北的人們,從新過上了冬季,不夸張的說應該比冬天那會兒還要冷吧,尤其是在屋里面,需...
    方伊姍閱讀 381評論 0 0
  • (六項精進)打卡第136天 姓名:汪何炯 公司.:寧波萬尚進出口有限公司 組別:340期【反省一組】學員兼隊長 ...
    汪何炯閱讀 181評論 0 0
  • 思念是春雨 滴落我心 相思成風 風過留痕 偷不走的心 抹不去的痕 斬不盡的柔情 忘不了的純真 不期的相遇 盛開在 ...
    攀偉閱讀 214評論 0 1

友情鏈接更多精彩內(nèi)容