使用MyBatis Generator生成實體類、Mapper接口以及對應的XML文件時,有時候會根據本身的訴求生成一些定製化的東西,而MBG提供了大量的插件以供使用
在咱們使用的generatorConfig.xml文件裏面進行配置便可
如下是我整理的比較有用的幾個插件java
<!-- JavaBean 實現 序列化 接口 --> <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
生成的java實體代碼以下git
import lombok.Getter; import lombok.Setter; import java.io.Serializable; /** * @Author: A.H * @Date: 2019/9/16 19:37 */ import java.io.Serializable; public class UserInfo implements Serializable { private Long id; private String userName; private String userPhone; private static final long serialVersionUID = 1L; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPhone() { return userPhone; } public void setUserPhone(String userPhone) { this.userPhone = userPhone; } }
<!-- 開啓支持內存分頁 可生成 支持內存分佈的方法及參數 --> <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin" />
生成的interface文件中會多一個接口github
public interface UserInfoMapper { ... List<UserInfo> selectByExampleWithRowbounds(UserInfoExample example, RowBounds rowBounds); ... }
/** * java 代碼使用方式 */ @Override public void getUserList(){ List<UserInfo> list = userInfoMapper.selectByExampleWithRowbounds(null,new RowBounds(0,10)); for (UserInfo user : list){ System.out.println( user.toString()); } }
# 打印出來結果 UserInfo(id=1, userName=張三, userPhone=133333333) UserInfo(id=2, userName=李四, userPhone=12222222) UserInfo(id=3, userName=王五, userPhone=14444444444) UserInfo(id=4, userName=趙六, userPhone=1555555555) UserInfo(id=5, userName=田七, userPhone=134556666) UserInfo(id=6, userName=耿二, userPhone=1333333333334) UserInfo(id=7, userName=孫八, userPhone=1323123123) UserInfo(id=8, userName=齊九, userPhone=123321321) UserInfo(id=9, userName=史十, userPhone=33231321) UserInfo(id=10, userName=尚十一, userPhone=312321312)
下面這個是我從大神那個貼過來的,惟一修改的是添加domain的impor我添加了全部Lombock的引用,多加了@ToString註解api
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: A.H * @Date: 2019/9/21 15:05 */ 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"); topLevelClass.addImportedType("lombok.*"); //添加domain的註解 topLevelClass.addAnnotation("@Data"); topLevelClass.addAnnotation("@ToString"); 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); } }
在generatorConfig.xml文件中添加mybatis
<!-- 自定義插件實現lomlock註解--> <plugin type="com.lkucar.server.common.LombokPlugin"/>
生成的實體類清爽多了app
import java.io.Serializable; import lombok.*; /** * Created by Mybatis Generator on 2019/09/21 */ @Data @ToString @Builder @NoArgsConstructor @AllArgsConstructor public class UserInfo implements Serializable { private Long id; private String userName; private String userPhone; private static final long serialVersionUID = 1L; }
參考資料:3. MyBatis Generator 插件
MyBatis Generator(MBG)提供的插件
MybatisGenerator + Lombok 自動生成的domain再也沒有一堆Getter/Setter方法了dom