Commit de2b4828 authored by 以墨为白's avatar 以墨为白 🎧

generator

parent 366e4ec5
package com.zksy.szpt.config;
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.TopLevelClass;
import java.util.List;
/**
* mapper接口增加继承BaseMapper
*/
public class BaseMapperPlugin extends PluginAdapter {
private static final String BASE_MAPPER = "com.baomidou.mybatisplus.core.mapper.BaseMapper";
@Override
public boolean validate(List<String> warnings) {
return true;
}
@Override
public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
// 导入 BaseMapper
FullyQualifiedJavaType baseMapperType = new FullyQualifiedJavaType(BASE_MAPPER);
FullyQualifiedJavaType entityType = new FullyQualifiedJavaType(introspectedTable.getBaseRecordType());
// 让 Mapper 继承 BaseMapper<Entity>
FullyQualifiedJavaType superInterface = new FullyQualifiedJavaType(
String.format("%s<%s>", BASE_MAPPER, entityType.getShortName()));
interfaze.addSuperInterface(superInterface);
interfaze.addImportedType(baseMapperType);
interfaze.addImportedType(entityType);
return true;
}
}
package com.zksy.szpt.config;
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.Field;
import org.mybatis.generator.api.dom.java.TopLevelClass;
import java.util.List;
/**
* MyBatis Generator 插件:自动为实体类添加 Swagger 注解
* 类上属性需要mysql的url需要加useInformationSchema=true
*/
public class SwaggerAnnotationPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> warnings) {
return true; // 永远返回 true,表示插件可用
}
/**
* 处理 Model 类,为其添加 Swagger 注解
*/
@Override
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
// 添加 @ApiModel 注解
topLevelClass.addImportedType("io.swagger.annotations.ApiModel");
topLevelClass.addAnnotation("@ApiModel(\"" + introspectedTable.getRemarks() + "\")");
return true;
}
/**
* 处理 Model 字段,为其添加 @ApiModelProperty 注解
*/
@Override
public boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass,
IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable,
ModelClassType modelClassType) {
// 添加 @ApiModelProperty 注解
topLevelClass.addImportedType("io.swagger.annotations.ApiModelProperty");
String columnComment = introspectedColumn.getRemarks(); // 获取数据库中的字段注释
field.addAnnotation("@ApiModelProperty(value = \"" + columnComment + "\")");
return true;
}
}
package com.zksy.szpt.config;
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.Field;
import org.mybatis.generator.api.dom.java.TopLevelClass;
import java.util.List;
/**
* 自定义 MyBatis Generator 插件:
* 将数据库表注释添加到实体类的类级 JavaDoc 上。mysql的url需要加useInformationSchema=true
* 表字段注释加到实体类属性上。
*/
public class TableRemarksPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> warnings) {
// 必须实现 validate 方法,返回 true 表示插件可用
return true;
}
/**
* 为实体类添加表注释
*/
@Override
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
// 获取数据库表的注释
String tableRemarks = introspectedTable.getRemarks();
if (tableRemarks != null && !tableRemarks.isEmpty()) {
// 添加类级 JavaDoc 注释
topLevelClass.addJavaDocLine("/**");
topLevelClass.addJavaDocLine(" * " + tableRemarks);
topLevelClass.addJavaDocLine(" */");
}
return true;
}
/**
* 为实体类字段添加字段注释。前面使用了DefaultCommentGenerator方法,因此这里可以不用。
*/
@Override
public boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass,
IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable,
ModelClassType modelClassType) {
// 获取数据库字段的注释
String columnRemarks = introspectedColumn.getRemarks();
if (columnRemarks != null && !columnRemarks.isEmpty()) {
// 添加字段 JavaDoc 注释。前面使用了DefaultCommentGenerator方法,因此这里可以不用。
// field.addJavaDocLine("/**");
// field.addJavaDocLine(" * " + columnRemarks);
// field.addJavaDocLine(" */");
}
return true;
}
}
...@@ -17,6 +17,7 @@ public class AppStoreService { ...@@ -17,6 +17,7 @@ public class AppStoreService {
this.appStoreMapper = appStoreMapper; this.appStoreMapper = appStoreMapper;
} }
public String getAppSecretByAppKey(String appKey) { public String getAppSecretByAppKey(String appKey) {
LambdaQueryWrapper<AppStore> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<AppStore> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AppStore::getAppKey, appKey); queryWrapper.eq(AppStore::getAppKey, appKey);
......
...@@ -10,6 +10,12 @@ ...@@ -10,6 +10,12 @@
<properties resource="mysql.properties"/> <properties resource="mysql.properties"/>
<context id="DB2Tables" targetRuntime="MyBatis3"> <context id="DB2Tables" targetRuntime="MyBatis3">
<!-- plugin顺序必须在这里-->
<plugin type="com.zksy.szpt.config.BaseMapperPlugin"/>
<plugin type="com.zksy.szpt.config.SwaggerAnnotationPlugin"/>
<plugin type="com.zksy.szpt.config.TableRemarksPlugin"></plugin>
<!--使用自定义主食类,将表注释写入实体类注释中--> <!--使用自定义主食类,将表注释写入实体类注释中-->
<commentGenerator type="com.zksy.szpt.config.MybatisGenerator"> <commentGenerator type="com.zksy.szpt.config.MybatisGenerator">
<!--去掉mybatisgenerator自己的注释--> <!--去掉mybatisgenerator自己的注释-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment