package org.example.tool;
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.FullyQualifiedJavaType;
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 org.mybatis.generator.internal.util.StringUtility;
import java.util.HashSet;
import java.util.List;
import java.util.Properties;
/**
* 生成插件:
* 1. 实体类可以指定lombok注解,而不生成Getter,Setter方法
* 2. 可以指定继承的父类,会指定父接口使用的泛型类型(实体)
*/
public class DefaultGeneratorPlugin extends PluginAdapter {
private HashSet<String> rootMappers = new HashSet<>();
//是否需要生成Data注解
private boolean needsData = false;
//是否需要生成Getter注解
private boolean needsGetter = false;
//是否需要生成Setter注解
private boolean needsSetter = false;
//是否需要生成ToString注解
private boolean needsToString = false;
//是否需要生成Accessors(chain = true)注解
private boolean needsAccessors = false;
//是否需要生成EqualsAndHashCode注解
private boolean needsEqualsAndHashCode = false;
@Override
public boolean validate(List<String> warnings) {
return true;
}
@Override
public void setProperties(Properties properties) {
super.setProperties(properties);
String rootMappers = properties.getProperty("rootMappers");
if (StringUtility.stringHasValue(rootMappers)) {
for (String mapper : rootMappers.split(",")) {
this.rootMappers.add(mapper);
}
}
//lombok扩展
String lombok = properties.getProperty("lombok");
if (lombok != null && !"".equals(lombok)) {
this.needsData = lombok.contains("Data");
//@Data 优先级高于 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode
this.needsGetter = !this.needsData && lombok.contains("Getter");
this.needsSetter = !this.needsData && lombok.contains("Setter");
this.needsToString = !this.needsData && lombok.contains("ToString");
this.needsEqualsAndHashCode = !this.needsData && lombok.contains("EqualsAndHashCode");
this.needsAccessors = lombok.contains("Accessors");
}
}
@Override
public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
//获取实体类
FullyQualifiedJavaType entityType = new FullyQualifiedJavaType(introspectedTable.getBaseRecordType());
//import接口
for (String mapper : rootMappers) {
interfaze.addImportedType(new FullyQualifiedJavaType(mapper));
interfaze.addSuperInterface(new FullyQualifiedJavaType(mapper + "<" + entityType.getShortName() + ">"));
}
//import实体类
interfaze.addImportedType(entityType);
interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Mapper"));
interfaze.addAnnotation("@Mapper");
return true;
}
/**
* 生成基础实体类
*
* @param topLevelClass
* @param introspectedTable
* @return
*/
@Override
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
//lombok扩展开始
//如果需要Data,引入包,代码增加注解
if (this.needsData) {
topLevelClass.addImportedType("lombok.Data");
topLevelClass.addAnnotation("@Data");
}
//如果需要Getter,引入包,代码增加注解
if (this.needsGetter) {
topLevelClass.addImportedType("lombok.Getter");
topLevelClass.addAnnotation("@Getter");
}
//如果需要Setter,引入包,代码增加注解
if (this.needsSetter) {
topLevelClass.addImportedType("lombok.Setter");
topLevelClass.addAnnotation("@Setter");
}
//如果需要ToString,引入包,代码增加注解
if (this.needsToString) {
topLevelClass.addImportedType("lombok.ToString");
topLevelClass.addAnnotation("@ToString");
}
//如果需要Getter,引入包,代码增加注解
if (this.needsAccessors) {
topLevelClass.addImportedType("lombok.experimental.Accessors");
topLevelClass.addAnnotation("@Accessors(chain = true)");
}
//如果需要Getter,引入包,代码增加注解
if (this.needsEqualsAndHashCode) {
topLevelClass.addImportedType("lombok.EqualsAndHashCode");
topLevelClass.addAnnotation("@EqualsAndHashCode");
}
return true;
}
/**
* 如果需要生成Getter注解,就不需要生成get相关代码了
*/
@Override
public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
return !(this.needsData || this.needsGetter);
}
/**
* 如果需要生成Setter注解,就不需要生成set相关代码了
*/
@Override
public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
return !(this.needsData || this.needsSetter);
}
@Override
public boolean clientInsertMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientInsertMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientInsertSelectiveMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientInsertSelectiveMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientSelectByPrimaryKeyMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientSelectByPrimaryKeyMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientUpdateByPrimaryKeySelectiveMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientUpdateByPrimaryKeySelectiveMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientDeleteByPrimaryKeyMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientDeleteByPrimaryKeyMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientCountByExampleMethodGenerated(Method
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
lottery-system-master.zip (69个子文件)
lottery-system-master
pom.xml 6KB
src
test
java
test
example
UserMapperTest.java 917B
MapperTest模版.java 576B
main
resources
mapper
MemberMapper.xml 3KB
UserMapper.xml 5KB
RecordMapper.xml 3KB
SettingMapper.xml 3KB
AwardMapper.xml 4KB
application.properties 2KB
public
draw.html 4KB
setting.html 12KB
index.html 8KB
generator
config.xml 4KB
static
js
draw.js 11KB
setting.js 10KB
util.js 8KB
index.js 8KB
3rd
polyfill.min.js 3KB
axios.js 42KB
element-ui@2.13.2
lib
index.js 554KB
theme-chalk
index.css 227KB
fonts
element-icons.woff 28KB
element-icons.ttf 55KB
tagcanvas.min.js 42KB
vue.js 334KB
axios.min.js 13KB
vue.min.js 91KB
img
index.jpg 179KB
test-head.jpg 44KB
bg.jpg 587KB
css
style.css 1KB
reset.css 975B
app.css 217B
index.css 563B
favicon.ico 37KB
java
org
example
Application.java 303B
mapper
SettingMapper.java 318B
RecordMapper.java 487B
MemberMapper.java 343B
UserMapper.java 299B
AwardMapper.java 339B
tool
Generator.java 1KB
DefaultCommentGenerator.java 3KB
DefaultGeneratorPlugin.java 10KB
OverIsMergeablePlugin.java 780B
controller
RecordController.java 1KB
UserController.java 2KB
AwardController.java 1KB
MemberController.java 1KB
SettingController.java 1KB
base
JSONResponse.java 298B
BaseMapper.java 326B
service
MemberService.java 611B
UserService.java 3KB
AwardService.java 600B
SettingService.java 1KB
RecordService.java 864B
model
Member.java 468B
Setting.java 542B
Record.java 425B
User.java 679B
Award.java 601B
exception
AppException.java 484B
config
web
RequestResponseBodyMethodProcessorWrapper.java 1KB
AppConfig.java 3KB
ExceptionAdvice.java 1KB
interceptor
LoginInterceptor.java 3KB
lucky-draw.iml 11KB
db
lucky_draw.sql 13KB
共 69 条
- 1
资源评论
云哲-吉吉2021
- 粉丝: 3353
- 资源: 1129
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Anaconda3-2024.02-1-Windows-x86-64.exe
- stm32cubemx can通信 一个板子负责传感器采集 一个板子负责wifi传递到网页 网页可控制传感器板子.zip
- k8s集群搭建1.27.1版本(来源于图灵k8s笔记)
- 树莓派连接 DS18B20 温度传感器读取温度时监控客户端,服务器端连接状况,实现断线重连机制
- 小游戏-坦克大战,你认为的小游戏
- 最好用的富文本编辑器wangeditor
- jQuery 3.7.1
- 校园失物招领小程序源码可作毕业设计
- SAP客户端GUI740安装包(JAVA版本)
- winlibs-x86-64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功