|
@@ -1,29 +1,5 @@
|
|
|
package com.diagbot;
|
|
|
|
|
|
-import com.baomidou.mybatisplus.annotation.DbType;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
|
-import com.baomidou.mybatisplus.generator.AutoGenerator;
|
|
|
-import com.baomidou.mybatisplus.generator.InjectionConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.FileOutConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.GlobalConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.IFileCreate;
|
|
|
-import com.baomidou.mybatisplus.generator.config.PackageConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.StrategyConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.TemplateConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
|
|
|
-import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
|
|
|
-import com.baomidou.mybatisplus.generator.config.po.TableInfo;
|
|
|
-import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
|
|
|
-import com.baomidou.mybatisplus.generator.config.rules.FileType;
|
|
|
-import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
|
|
|
-import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
|
|
|
-
|
|
|
-import java.awt.*;
|
|
|
-import java.io.File;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
/**
|
|
|
* @ClassName: CodeAutoGenerator
|
|
|
* @Description:
|
|
@@ -39,12 +15,7 @@ public class CodeAutoGenerator {
|
|
|
private static String username = "root";
|
|
|
private static String password = "lantone";
|
|
|
private static String url = "jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8";
|
|
|
- private static DbType DB_TYPE = DbType.MYSQL;
|
|
|
- private static String driverClassName = "com.mysql.cj.jdbc.Driver";
|
|
|
- /**
|
|
|
- * 作者
|
|
|
- */
|
|
|
- private static String AUTHOR = "songxl";
|
|
|
+
|
|
|
/**
|
|
|
* 表名
|
|
|
*/
|
|
@@ -56,424 +27,9 @@ public class CodeAutoGenerator {
|
|
|
*/
|
|
|
private static String[] ENTITY_IGNORE_PREFIX = { "med_" };
|
|
|
|
|
|
-
|
|
|
- //生成文件根目录
|
|
|
- private static String projectPath = "D://code";
|
|
|
- //是否将根目录更新为工程的根目录【true会覆盖该项目对应目录下的文件、慎用】
|
|
|
- private static boolean updatePath = true;
|
|
|
- //模块名称
|
|
|
- private static String moduleName = "security-center";
|
|
|
-
|
|
|
- // 文件生成开关
|
|
|
-
|
|
|
- //facade生成开关
|
|
|
- private static boolean facadeFlag = true;
|
|
|
- //service生成开关
|
|
|
- private static boolean serviceFlag = true;
|
|
|
- //serviceImpl生成开关
|
|
|
- private static boolean serviceImplFlag = true;
|
|
|
- //mapper.java
|
|
|
- private static boolean mapperJFlag = true;
|
|
|
- //mapperParent.java(数据业务数据库CRUD接口)生成开关
|
|
|
- private static boolean mapperParentJFlag = true;
|
|
|
- //mapper.xml (实体类bean与数据库表字段映射)生成开关
|
|
|
- private static boolean mapperXFlag = true;
|
|
|
- //mapperExt.xml(数据库CRUD sql)生成开关
|
|
|
- private static boolean mapperExtXFlag = true;
|
|
|
- //entity(表实体类)生成开关
|
|
|
- private static boolean entityFlag = true;
|
|
|
-
|
|
|
- /**
|
|
|
- * 父包名路径(文件输出路径,也是导包的路径)
|
|
|
- */
|
|
|
- private static String PARENT_PACKAGE_PATH = "/com/lantone/security";
|
|
|
- /**
|
|
|
- * 生成文件父类包package
|
|
|
- */
|
|
|
- private static String packageName = "com.lantone.security";
|
|
|
-
|
|
|
-
|
|
|
- // 各层包名
|
|
|
- private static String ENTITY_PATH = "/entity/";
|
|
|
- private static String FACADE_PATH = "/facade/";
|
|
|
- private static String MAPPER_PATH = "/mapper/";
|
|
|
- private static String XML_PATH = "/resources/mapper/";
|
|
|
- private static String SERVICE_PATH = "/service/";
|
|
|
- private static String SERVICE_IMPL_PATH = "/service/impl/";
|
|
|
- private static String CONTROLLER_PATH = "/web/";
|
|
|
-
|
|
|
-
|
|
|
- // 自定义输出模板和位置
|
|
|
- /**
|
|
|
- * entity输出模板
|
|
|
- */
|
|
|
- private static String ENTITY_TEMPLATE = "freemarker/entity.java.ftl";
|
|
|
- private static String ENTITY_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + ENTITY_PATH;
|
|
|
- /**
|
|
|
- * facade输出模板
|
|
|
- */
|
|
|
- private static String FACADE_TEMPLATE = "freemarker/facade.java.ftl";
|
|
|
- private static String FACADE_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + FACADE_PATH;
|
|
|
- /**
|
|
|
- * mapper.xml输出模板
|
|
|
- */
|
|
|
- private static String XML_TEMPLATE = "freemarker/mapper.xml.ftl";
|
|
|
- private static String XML_OUTPUT_PATH = "/src/main" + XML_PATH;
|
|
|
- /**
|
|
|
- * mapperExt.xml输出模板
|
|
|
- */
|
|
|
- private static String XMLEXT_TEMPLATE = "freemarker/mapperExt.xml.ftl";
|
|
|
- private static String XMLEXT_OUTPUT_PATH = "/src/main" + XML_PATH + "/ext/";
|
|
|
- /**
|
|
|
- * mapper.java输出模板
|
|
|
- */
|
|
|
- private static String MAPPER_TEMPLATE = "freemarker/mapper.java.ftl";
|
|
|
- private static String MAPPER_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + MAPPER_PATH;
|
|
|
-
|
|
|
- /**
|
|
|
- * mapperParent.java输出模板
|
|
|
- */
|
|
|
- private static String BASEMAPPER_TEMPLATE = "freemarker/mapperParent.java.ftl";
|
|
|
- private static String BASEMAPPER_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + MAPPER_PATH + "/parent/";
|
|
|
-
|
|
|
- /**
|
|
|
- * service输出模板
|
|
|
- */
|
|
|
- private static String SERVICE_TEMPLATE = "freemarker/service.java.ftl";
|
|
|
- private static String SERVICE_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + SERVICE_PATH;
|
|
|
- /**
|
|
|
- * serviceImpl输出模板
|
|
|
- */
|
|
|
- private static String SERVICE_IMPL_TEMPLATE = "freemarker/serviceImpl.java.ftl";
|
|
|
- private static String SERVICE_IMPL_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + SERVICE_IMPL_PATH;
|
|
|
- /**
|
|
|
- * controller输出模板
|
|
|
- */
|
|
|
- private static String CONTROLLER_TEMPLATE = "freemarker/controller.java.ftl";
|
|
|
- private static String CONTROLLER_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + CONTROLLER_PATH;
|
|
|
-
|
|
|
-
|
|
|
public static void main(String[] args) {
|
|
|
-
|
|
|
- // 全局配置
|
|
|
- GlobalConfig globalConfig = globalConfig();
|
|
|
- // 数据源配置
|
|
|
- DataSourceConfig dataSourceConfig = dataSourceConfig();
|
|
|
- // 策略配置
|
|
|
- StrategyConfig strategyConfig = strategyConfig();
|
|
|
- // 包配置
|
|
|
- PackageConfig packageConfig = packageConfig();
|
|
|
- // 模板配置
|
|
|
- TemplateConfig templateConfig = templateConfig();
|
|
|
- // 自定义配置
|
|
|
- InjectionConfig injectionConfig = injectionConfig();
|
|
|
-
|
|
|
- // 执行
|
|
|
- new AutoGenerator().setGlobalConfig(globalConfig)
|
|
|
- .setDataSource(dataSourceConfig)
|
|
|
- .setStrategy(strategyConfig)
|
|
|
- .setPackageInfo(packageConfig)
|
|
|
- // 因为使用了自定义模板,所以需要把各项置空否则会多生成一次
|
|
|
- .setTemplate(templateConfig)
|
|
|
- // 使用的模板引擎,如果不是默认模板引擎则需要添加模板依赖到pom
|
|
|
- .setTemplateEngine(new FreemarkerTemplateEngine())
|
|
|
- .setCfg(injectionConfig)
|
|
|
- .execute();
|
|
|
+ GeneratorUtil.create(username, password, url, TABLES, ENTITY_IGNORE_PREFIX);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 全局配置
|
|
|
- */
|
|
|
- private static GlobalConfig globalConfig() {
|
|
|
- return new GlobalConfig()
|
|
|
- // 打开文件
|
|
|
- .setOpen(false)
|
|
|
- // .setOutputDir("D://code")
|
|
|
- // 文件覆盖
|
|
|
- .setFileOverride(true)
|
|
|
- // 开启activeRecord模式
|
|
|
- .setActiveRecord(false)
|
|
|
- // XML 二级缓存
|
|
|
- .setEnableCache(false)
|
|
|
- // XML ResultMap: mapper.xml生成查询映射结果
|
|
|
- .setBaseResultMap(true)
|
|
|
- // XML ColumnList: mapper.xml生成查询结果列
|
|
|
- .setBaseColumnList(false)
|
|
|
- // swagger注解; 须添加swagger依赖
|
|
|
- // .setSwagger2(true)
|
|
|
- // 作者
|
|
|
- .setAuthor(AUTHOR)
|
|
|
- // 设置实体类名称
|
|
|
- .setControllerName("%sController")
|
|
|
- .setServiceName("%sService")
|
|
|
- .setServiceImplName("%sServiceImpl")
|
|
|
- .setMapperName("%sMapper")
|
|
|
- .setXmlName("%sMapper");
|
|
|
- }
|
|
|
|
|
|
- /**
|
|
|
- * 数据源配置
|
|
|
- */
|
|
|
- private static DataSourceConfig dataSourceConfig() {
|
|
|
- return new DataSourceConfig()
|
|
|
- // 数据库类型
|
|
|
- .setDbType(DB_TYPE)
|
|
|
- // 连接驱动
|
|
|
- .setDriverName(driverClassName)
|
|
|
- // 地址
|
|
|
- .setUrl(url)
|
|
|
- // 用户名
|
|
|
- .setUsername(username)
|
|
|
- // 密码
|
|
|
- .setPassword(password)
|
|
|
- // 自定义数据库表字段类型转换【可选】
|
|
|
- .setTypeConvert(new MySqlTypeConvert() {
|
|
|
- @Override
|
|
|
- public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
|
|
|
- //将数据库中datetime转换成date
|
|
|
- if (fieldType.toLowerCase().contains("datetime")) {
|
|
|
- return DbColumnType.DATE;
|
|
|
- }
|
|
|
- return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 策略配置
|
|
|
- */
|
|
|
- private static StrategyConfig strategyConfig() {
|
|
|
- return new StrategyConfig()
|
|
|
- // 表名生成策略:下划线连转驼峰
|
|
|
- .setNaming(NamingStrategy.underline_to_camel)
|
|
|
- // 表字段生成策略:下划线连转驼峰
|
|
|
- .setColumnNaming(NamingStrategy.underline_to_camel)
|
|
|
- // 需要生成的表
|
|
|
- .setInclude(TABLES)
|
|
|
- // 生成controller
|
|
|
- .setRestControllerStyle(true)
|
|
|
- // 去除表前缀
|
|
|
- .setTablePrefix(ENTITY_IGNORE_PREFIX)
|
|
|
- // controller映射地址:驼峰转连字符
|
|
|
- .setControllerMappingHyphenStyle(true)
|
|
|
- // 是否启用builder 模式
|
|
|
- .setEntityBuilderModel(true)
|
|
|
- // 是否为lombok模型; 需要lombok依赖
|
|
|
- .setEntityLombokModel(true)
|
|
|
- // 生成实体类字段注解
|
|
|
- .setEntityTableFieldAnnotationEnable(true)
|
|
|
- //自定义父类
|
|
|
- .setSuperServiceImplClass(null)
|
|
|
- .setSuperMapperClass(null);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 包配置
|
|
|
- * 设置包路径用于导包时使用,路径示例:com.path
|
|
|
- */
|
|
|
- private static PackageConfig packageConfig() {
|
|
|
- return new PackageConfig()
|
|
|
- // 父包名
|
|
|
- .setParent(packageName)
|
|
|
- .setEntity("entity")
|
|
|
- .setMapper("mapper")
|
|
|
- .setXml("resources.mapper")
|
|
|
- .setService("service")
|
|
|
- .setServiceImpl("service.impl")
|
|
|
- .setController("facade");
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 模板配置
|
|
|
- */
|
|
|
- private static TemplateConfig templateConfig() {
|
|
|
- return new TemplateConfig()
|
|
|
- // 置空后方便使用自定义输出位置
|
|
|
- .setEntity(null)
|
|
|
- .setXml(null)
|
|
|
- .setMapper(null)
|
|
|
- .setService(null)
|
|
|
- .setServiceImpl(null)
|
|
|
- .setController(null);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 自定义配置
|
|
|
- */
|
|
|
- private static InjectionConfig injectionConfig() {
|
|
|
- return new InjectionConfig() {
|
|
|
- @Override
|
|
|
- public void initMap() {
|
|
|
- // 注入配置
|
|
|
- }
|
|
|
- }
|
|
|
- // 判断是否创建文件
|
|
|
- .setFileCreate(new IFileCreate() {
|
|
|
- @Override
|
|
|
- public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
|
|
|
-
|
|
|
- // 检查文件目录,不存在自动递归创建
|
|
|
- checkDir(filePath);
|
|
|
-
|
|
|
- // 指定需要覆盖的文件
|
|
|
- // 文件结尾名字参照 全局配置 中对各层文件的命名,未修改为默认值
|
|
|
- if (isExists(filePath)) {
|
|
|
- if (filePath.endsWith("MapperParent.java")
|
|
|
- || filePath.endsWith("Facade.java")) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
- }
|
|
|
- })
|
|
|
- // 自定义输出文件
|
|
|
- .setFileOutConfigList(fileOutConfigList());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @Author songxl
|
|
|
- * @Description 自定义输出文件配置
|
|
|
- * @Date 2021/7/1
|
|
|
- * @Param []
|
|
|
- * @Return java.util.List<com.baomidou.mybatisplus.generator.config.FileOutConfig>
|
|
|
- * @MethodName fileOutConfigList
|
|
|
- */
|
|
|
- private static List<FileOutConfig> fileOutConfigList() {
|
|
|
-
|
|
|
- List<FileOutConfig> list = new ArrayList<>();
|
|
|
- // 当前项目路径
|
|
|
- if (updatePath) {
|
|
|
- projectPath = System.getProperty("user.dir") + "\\" + moduleName;
|
|
|
- }
|
|
|
-
|
|
|
- // 实体类文件输出
|
|
|
- if (entityFlag) {
|
|
|
- list.add(new FileOutConfig(ENTITY_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + ENTITY_OUTPUT_PATH);
|
|
|
- return projectPath + ENTITY_OUTPUT_PATH + tableInfo.getEntityName() + StringPool.DOT_JAVA;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- // facade文件输出 不会覆盖
|
|
|
- if (facadeFlag) {
|
|
|
- list.add(new FileOutConfig(FACADE_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + FACADE_OUTPUT_PATH);
|
|
|
- return projectPath + FACADE_OUTPUT_PATH + tableInfo.getServiceName().replaceAll("Service", "") + "Facade" + StringPool.DOT_JAVA;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // mapper xml文件输出
|
|
|
- if (mapperXFlag) {
|
|
|
- list.add(new FileOutConfig(XML_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + XML_OUTPUT_PATH);
|
|
|
- return projectPath + XML_OUTPUT_PATH + tableInfo.getMapperName() + StringPool.DOT_XML;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- //mapperExt xml文件输出
|
|
|
- if (mapperExtXFlag) {
|
|
|
- list.add(new FileOutConfig(XMLEXT_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + XML_OUTPUT_PATH);
|
|
|
- return projectPath + XMLEXT_OUTPUT_PATH + tableInfo.getMapperName() + "Ext" + StringPool.DOT_XML;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // mapper文件输出
|
|
|
- if (mapperJFlag) {
|
|
|
- list.add(new FileOutConfig(MAPPER_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + MAPPER_OUTPUT_PATH);
|
|
|
- return projectPath + MAPPER_OUTPUT_PATH + tableInfo.getMapperName() + StringPool.DOT_JAVA;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- // mapperParent文件输出
|
|
|
- if (mapperParentJFlag) {
|
|
|
- list.add(new FileOutConfig(BASEMAPPER_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + MAPPER_OUTPUT_PATH);
|
|
|
- return projectPath + BASEMAPPER_OUTPUT_PATH + tableInfo.getMapperName() + "Parent" + StringPool.DOT_JAVA;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // service文件输出
|
|
|
- if (serviceFlag) {
|
|
|
- list.add(new FileOutConfig(SERVICE_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + SERVICE_OUTPUT_PATH);
|
|
|
- return projectPath + SERVICE_OUTPUT_PATH + tableInfo.getServiceName() + StringPool.DOT_JAVA;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // service impl文件输出
|
|
|
- if (serviceImplFlag) {
|
|
|
- list.add(new FileOutConfig(SERVICE_IMPL_TEMPLATE) {
|
|
|
- @Override
|
|
|
- public String outputFile(TableInfo tableInfo) {
|
|
|
- makeDir(projectPath + SERVICE_IMPL_OUTPUT_PATH);
|
|
|
- return projectPath + SERVICE_IMPL_OUTPUT_PATH + tableInfo.getServiceImplName() + StringPool.DOT_JAVA;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // controller文件输出
|
|
|
- // list.add(new FileOutConfig(CONTROLLER_TEMPLATE) {
|
|
|
- // @Override
|
|
|
- // public String outputFile(TableInfo tableInfo) {
|
|
|
- // makeDir(projectPath + CONTROLLER_OUTPUT_PATH);
|
|
|
- // return projectPath + CONTROLLER_OUTPUT_PATH + tableInfo.getControllerName() + StringPool.DOT_JAVA;
|
|
|
- // }
|
|
|
- // });
|
|
|
-
|
|
|
- return list;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @Author songxl
|
|
|
- * @Description 创建文件夹
|
|
|
- * @Date 2021/7/1
|
|
|
- * @Param [path]
|
|
|
- * @Return void
|
|
|
- * @MethodName makeDir
|
|
|
- */
|
|
|
- private static void makeDir(String path) {
|
|
|
-
|
|
|
- File dir = new File(path);
|
|
|
- if (!dir.exists()) {
|
|
|
- dir.mkdirs();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @Author songxl
|
|
|
- * @Description 判断文件是否存在
|
|
|
- * @Date 2021/7/1
|
|
|
- * @Param [path]
|
|
|
- * @Return boolean
|
|
|
- * @MethodName isExists
|
|
|
- */
|
|
|
- private static boolean isExists(String path) {
|
|
|
-
|
|
|
-
|
|
|
- File file = new File(path);
|
|
|
- return file.exists();
|
|
|
- }
|
|
|
}
|