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

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

但generator自動(dòng)生成的domain.java里面默認(rèn)帶有了所有g(shù)et/set方法, 讓人眼花繚亂.

如何讓生成domain沒有g(shù)et/set方法, 同時(shí)自動(dòng)貼上lombok的幾個(gè)常用標(biāo)簽?zāi)?
話不多說, 下面直接開始.

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

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

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

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

generator.png

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

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

此時(shí)mybatis-generator.xml大概如下: 留意<plugin>標(biāo)簽的位置, 我用的是pg, 直接復(fù)制粘貼的同學(xué)請(qǐng)修改成數(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>

        <!--關(guān)閉注釋 -->
        <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>

        <!--對(duì)應(yīng)數(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 自動(dòng)生成Lombok標(biāo)簽 不生成Get/Set方法-CSDN下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市麻顶,隨后出現(xiàn)的幾起案子戴而,更是在濱河造成了極大的恐慌驯用,老刑警劉巖拂酣,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抡蛙,死亡現(xiàn)場(chǎng)離奇詭異茴肥,居然都是意外死亡肢娘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門塌碌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渊胸,“玉大人,你說我怎么就攤上這事台妆◆崦停” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵频丘,是天一觀的道長(zhǎng)办成。 經(jīng)常有香客問我,道長(zhǎng)搂漠,這世上最難降的妖魔是什么迂卢? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮桐汤,結(jié)果婚禮上而克,老公的妹妹穿的比我還像新娘。我一直安慰自己怔毛,他們只是感情好员萍,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拣度,像睡著了一般碎绎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抗果,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天筋帖,我揣著相機(jī)與錄音,去河邊找鬼冤馏。 笑死日麸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逮光。 我是一名探鬼主播代箭,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼墩划,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了嗡综?” 一聲冷哼從身側(cè)響起乙帮,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛤高,沒想到半個(gè)月后蚣旱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碑幅,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戴陡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沟涨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恤批。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖裹赴,靈堂內(nèi)的尸體忽然破棺而出喜庞,到底是詐尸還是另有隱情,我是刑警寧澤棋返,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布延都,位于F島的核電站,受9級(jí)特大地震影響睛竣,放射性物質(zhì)發(fā)生泄漏晰房。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一射沟、第九天 我趴在偏房一處隱蔽的房頂上張望殊者。 院中可真熱鬧,春花似錦验夯、人聲如沸猖吴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽海蔽。三九已至,卻和暖如春绑谣,著一層夾襖步出監(jiān)牢的瞬間党窜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工域仇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刑然,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓暇务,卻偏偏與公主長(zhǎng)得像泼掠,于是被迫代替她去往敵國(guó)和親怔软。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

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