SpringBoot 2.4.0 Gradle使用插件去掉POJO的Getter和Setter方法
编者: wRitchie(吴理琪) 来源:http://www.bj9420.com
SpringBoot2.4.0项目采用Grale构建,插件MyBatis Generator是一个Mybatis工具项目,用于生成Mybatis的Model、Mapper、Dao持久层的代码,而使用lombok插件,对于自动生成的Getter、Setter方法,希望自动生成时,自动去掉,本文就为解决这个。
一、 Mybatis Generator 自定义插件(ngs)开发
1、 新建gradle Java工程ngs(noGetterSetter)
![b988a3253e94e6da1ce823ab03f1a3cc.png](https://i-blog.csdnimg.cn/blog_migrate/e558269252e03935c123f682763a7e1d.jpeg)
2、点击Next
![6fb61ba30d73252d6e253a91239ea697.png](https://i-blog.csdnimg.cn/blog_migrate/333fc7d835bbcbed0dcbd8e0d0a738d1.jpeg)
3、build.gradle.引入mybatis-generator-core依赖
![b96b98096673a85e68024d50335212de.png](https://i-blog.csdnimg.cn/blog_migrate/fad5c9d6dfa4504011eb9170621d23a8.jpeg)
4、在java目录下创建NoGetterSetterPlugin.java
package com.bj9420;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.Method;import org.mybatis.generator.api.dom.java.TopLevelClass;import java.util.List;/** * @Title: NoGetterSetterPlugin.java * @Description: Mybatis使用插件去掉POJO对象的Getter和Setter,并加上@Data注解 * @author: wRitchie * @date: 2020/12/2 10:09 * @version: V1.0 * @Copyright (c): 2020 http://www.bj9420.com All rights reserved. */public class NoGetterSetterPlugin extends PluginAdapter { /** * @Author: wRitchie * @Description: validate implement abstract method 'validate(List)' in 'Plugin' * @Param: [list] * @return: boolean * @Date: 2020/12/2 10:10 */ public boolean validate(List list) { return true; } /** * @Author: wRitchie * @Description: modelBaseRecordClassGenerated 该代码表示在生成class的时候,向topLevelClass添加一个@Data /@Setter和@Getter注解 * @Param: [topLevelClass, introspectedTable] * @return: boolean * @Date: 2020/12/2 11:10 */ @Override public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { topLevelClass.addAnnotation("import lombok.Data;@Data"); return super.modelBaseRecordClassGenerated(topLevelClass, introspectedTable); } /** * @Author: wRitchie * @Description: modelGetterMethodGenerated 该方法在生成每一个属性的getter方法时候调用,如果我们不想生成getter,直接返回false即可; * @Param: [method, topLevelClass, introspectedColumn, introspectedTable, modelClassType] * @return: boolean * @Date: 2020/12/2 11:20 */ @Override public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { return false; } /** * @Author: wRitchie * @Description: modelSetterMethodGenerated 该方法在生成每一个属性的setter方法时候调用,如果我们不想生成setter,直接返回false即可; * @Param: [method, topLevelClass, introspectedColumn, introspectedTable, modelClassType] * @return: boolean * @Date: 2020/12/2 11:20 */ @Override public boolean modelSetterMethodGenerated(Method method,TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,IntrospectedTable introspectedTable, ModelClassType modelClassType) { return false; }}
5、安装到本地仓库:idea右侧点击Gradle,展开Tasks,展开publishing,双击执行pubishToMavenLocal
![3a1f9feceb75a38eef193311ddae3fdc.png](https://i-blog.csdnimg.cn/blog_migrate/eb276ff77a3a228ae22804f2b50e10ad.jpeg)
6、执行成功:
![7d7b52db38564cc14d67154b06f4607c.png](https://i-blog.csdnimg.cn/blog_migrate/f49415d63c08ec9ad85b58770879a919.jpeg)
7、可以在maven本地仓库中看到已安装到本地仓库中
![7d22672d875c71dcd19fd94d2aa096e8.png](https://i-blog.csdnimg.cn/blog_migrate/689b95aba99413f5229b281c8c9eea47.jpeg)
二、Mybatis Generator 自定义插件的使用
1、在实际的项目中,使用Mybatis Generator代码插件,增加自定义插件至配置文件generatorConfig.xml中:,如下图:
![1a4b33ee03de3938ae55a8444024b74a.png](https://i-blog.csdnimg.cn/blog_migrate/5d1e0f8897736df1e05b34bd853599cf.jpeg)
2、mybatis-dev.properties配置文件
![b7d1ba5396168f021e1422c009eebe06.png](https://i-blog.csdnimg.cn/blog_migrate/841cb4723385a0f9ff7aa5549e7c5713.jpeg)
2、 generatorConfig.xml配置文件
![8a2b0d88c0b7cf12705d1a4a16fd9600.png](https://i-blog.csdnimg.cn/blog_migrate/e0888d698850745cfb5439ad919c3e3a.jpeg)
![85642ff59c0c95d24ea7b2dbdaf8f21d.png](https://i-blog.csdnimg.cn/blog_migrate/1f6fb27fc90a87d1fb6142db67bdd97d.jpeg)
三、 build.gradle配置文件
1、添加mybatisGenerator
![17efe13bb83ef6a1872df0948f7a377d.png](https://i-blog.csdnimg.cn/blog_migrate/7386431831fc2678a915ca342517fdc9.jpeg)
2、添加依赖,注意把前面的compile group改为第一步添加的mybatisGenerator
![b86a81804f1b03363ea97a576d328a80.png](https://i-blog.csdnimg.cn/blog_migrate/a5110be62b0f6b84ed31500379f9b63b.jpeg)
注:典型的难者不会,会者不难。这是折腾小半天,最后灵光一现才想到加上mybatisGenerator 'com.bj9420:ngs:1.0.0',开始一直报错:找不到com.bj9420.NoGetterSetterPlugin类!!!
![810bfb1832bea97d7c0e5b28ec3fcd04.png](https://i-blog.csdnimg.cn/blog_migrate/0753d4bd76da6daef45f6f2915b5eccc.jpeg)
3、添加任务
![38ed628a7cefa149922f4fb6ff7ad300.png](https://i-blog.csdnimg.cn/blog_migrate/e385d41020c1d32f9f14178acead0054.jpeg)
![3e2fc58204de1c608763ed73bac26de7.png](https://i-blog.csdnimg.cn/blog_migrate/7070652da03236be3305be02eb129c71.jpeg)
四、 运行
1、在Gradle中刷新,点开module下的other里找到mybatisGenarate
![4c43638b05c41ebf8a01ce705adaf535.png](https://i-blog.csdnimg.cn/blog_migrate/72f3ed4aa2164104c7fdfe7e047906fb.jpeg)
2、双击mybatisGenarate,自动生成Model、Mapper、Dao成功:
![4fb5ac5282b64ed449b25abd44c82179.png](https://i-blog.csdnimg.cn/blog_migrate/76a306d19937e31702fb4ac1e893170e.jpeg)
3、生成代码结构:
![b535fe4ad8eff1a0baa77acbe35871f8.png](https://i-blog.csdnimg.cn/blog_migrate/d40c86774c486444076be5976494e67c.jpeg)
![e2f73d048ab2e9a9b4453ed7b1d3cdd0.png](https://i-blog.csdnimg.cn/blog_migrate/cb7a6bc32eda41462b410559790ddd8b.jpeg)
4、生成代码去掉GetterSetter的POJO对象如图:
![9e158eda1250ff152ca71c7e4c58aa5b.png](https://i-blog.csdnimg.cn/blog_migrate/ea64f6228e2b3322d7cc156d8a0517f5.jpeg)