使用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下載