From bb7ef94706645322888ef05de3bf488f33553a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 25 Sep 2025 17:40:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/Main.java | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 cash-service/code-generator/src/main/java/com/czg/Main.java diff --git a/cash-service/code-generator/src/main/java/com/czg/Main.java b/cash-service/code-generator/src/main/java/com/czg/Main.java new file mode 100644 index 00000000..9915304b --- /dev/null +++ b/cash-service/code-generator/src/main/java/com/czg/Main.java @@ -0,0 +1,190 @@ +package com.czg; + +import com.mybatisflex.codegen.Generator; +import com.mybatisflex.codegen.config.*; +import com.mybatisflex.core.service.IService; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.zaxxer.hikari.HikariDataSource; + +/** + * @author ww + */ +public class Main { +// private final static String BASE_URL = "rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com"; + private final static String BASE_URL = "192.168.1.31"; + private final static String PORT = "3306"; + private final static String USERNAME = "root"; + private final static String PASSWORD = "Chaozg123."; + private final static String DATABASE = "czg_cashier"; + static String currentWorkingDirectory = System.getProperty("user.dir"); + static String basePackage = "com.czg."; + + public static void main(String[] args) { + + // tableName 指定需要生成的表 + +// String packageName = "system"; +// String packageName = "account"; +// String packageName = "product"; + String packageName = "market"; + + String tableName = "mk_shop_consume_discount_record"; + String author = "zs"; + //是否生成DTO实体 默认生成 + boolean isGenerateDto = true; + + //配置数据源 + HikariDataSource dataSource = new HikariDataSource(); + dataSource.setJdbcUrl("jdbc:mysql://" + BASE_URL + ":" + PORT + "/" + DATABASE); + dataSource.setUsername(USERNAME); + dataSource.setPassword(PASSWORD); + + String projectPath = currentWorkingDirectory + "/cash-service/" + packageName + "-service"; + + // 生成 mapper 和 service实现 + GlobalConfig globalConfig = createGlobalConfigUseStyle(projectPath, packageName, "tb", tableName); + globalConfig.setAuthor(author); + Generator generator = new Generator(dataSource, globalConfig); + generator.generate(); + + // 生成 entity 和 service + GlobalConfig serviceConfig = createServiceGlobalConfigUseStyle(currentWorkingDirectory + "/cash-common/cash-common-service", + basePackage + packageName, "tb", tableName); + Generator serviceGenerator = new Generator(dataSource, serviceConfig); + serviceConfig.setAuthor(author); + serviceGenerator.generate(); + + //默认生成全参数DTO + if(isGenerateDto){ + GlobalConfig dtoConfig = createDtoGlobalConfig(currentWorkingDirectory + "/cash-common/cash-common-service", + basePackage + packageName, "tb", tableName); + Generator dtoGenerator = new Generator(dataSource, dtoConfig); + dtoConfig.setAuthor(author); + dtoGenerator.generate(); + } + } + + public static GlobalConfig createGlobalConfigUseStyle(String projectPath, String packageName, String tablePrefix, String... tableNames) { + //创建配置内容 + GlobalConfig globalConfig = new GlobalConfig(); + + //设置根包 + globalConfig.getPackageConfig() + .setSourceDir(projectPath + "/src/main/java") + + .setEntityPackage(basePackage + packageName + ".entity") + .setServicePackage(basePackage + packageName + ".service") + + .setServiceImplPackage(basePackage + "service." + packageName + ".service.impl") + .setMapperPackage(basePackage + "service." + packageName + ".mapper") + + .setBasePackage(basePackage + "service." + packageName); + + globalConfig.getServiceConfig() + .setClassSuffix("Service"); + + globalConfig.getServiceImplConfig() + .setClassSuffix("ServiceImpl") + .setSuperClass(ServiceImpl.class); + globalConfig.enableServiceImpl(); + globalConfig.setServiceImplTemplatePath("templates/serviceImpl.tpl"); + + globalConfig.getMapperConfig() + .setClassSuffix("Mapper"); + globalConfig.enableMapper(); + + globalConfig.setMapperXmlPath(projectPath + "/src/main/resources/mapper"); + globalConfig.enableMapperXml(); + + //设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表 + globalConfig.getStrategyConfig() + .setTablePrefix(tablePrefix) + .setGenerateTable(tableNames); + + //设置生成 mapper + globalConfig.enableMapper(); + + return globalConfig; + } + + public static GlobalConfig createServiceGlobalConfigUseStyle(String projectPath, String packageName, String tablePrefix, String... tableNames) { + //创建配置内容 + GlobalConfig globalConfig = new GlobalConfig(); + + //设置根包 + globalConfig.getPackageConfig() + .setSourceDir(projectPath + "/src/main/java") + .setBasePackage(packageName); + + globalConfig.getServiceConfig() + .setClassSuffix("Service") + .setSuperClass(IService.class); + globalConfig.enableService(); + + //设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表 + globalConfig.getStrategyConfig() + .setTablePrefix(tablePrefix) + .setGenerateTable(tableNames); + + //设置生成 entity 并启用 Lombok + globalConfig.enableEntity() + .setWithLombok(true) + .setJdkVersion(21); + + //可以单独配置某个列 + ColumnConfig createTime = new ColumnConfig(); + createTime.setColumnName("create_time"); + createTime.setOnInsertValue("now()"); + globalConfig.getStrategyConfig() + .setColumnConfig(createTime); + + ColumnConfig updateTime = new ColumnConfig(); + updateTime.setColumnName("update_time"); + updateTime.setOnUpdateValue("now()"); + updateTime.setOnInsertValue("now()"); + globalConfig.getStrategyConfig() + .setColumnConfig(updateTime); + +// ColumnConfig deleted = new ColumnConfig(); +// deleted.setColumnName("is_del"); +// deleted.setLogicDelete(true); +// globalConfig.getStrategyConfig() +// .setColumnConfig(deleted); + +// ColumnConfig version = new ColumnConfig(); +// version.setColumnName("version"); +// version.setVersion(true); +// globalConfig.getStrategyConfig() +// .setColumnConfig(version); + + return globalConfig; + } + + public static GlobalConfig createDtoGlobalConfig(String projectPath, String packageName, String tablePrefix, String... tableNames) { + //创建配置内容 + GlobalConfig globalConfig = new GlobalConfig(); + + //设置根包 + globalConfig.getPackageConfig() + .setEntityPackage(packageName + ".dto") + .setSourceDir(projectPath + "/src/main/java") + .setBasePackage(packageName); + + //设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表 + globalConfig.getStrategyConfig() + .setTablePrefix(tablePrefix) + .setGenerateTable(tableNames); + globalConfig.setEntityTemplatePath("templates/entityDto.tpl"); + + globalConfig.getEntityConfig() + .setClassSuffix("DTO") + ; + + //设置生成 entity 并启用 Lombok + globalConfig.enableEntity() + .setWithLombok(true) + .setJdkVersion(21); + + return globalConfig; + } +}