From 197e080cccc4e3a3f3402eb62c426e6671df8252 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Wed, 12 Feb 2025 17:28:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/Main.java | 51 +++-- .../main/resources/templates/serviceImpl.tpl | 185 ++++++++++++++++++ 2 files changed, 215 insertions(+), 21 deletions(-) create mode 100644 cash-service/code-generator/src/main/resources/templates/serviceImpl.tpl 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 index 7b72e59d..19f90353 100644 --- a/cash-service/code-generator/src/main/java/com/czg/Main.java +++ b/cash-service/code-generator/src/main/java/com/czg/Main.java @@ -1,8 +1,7 @@ package com.czg; import com.mybatisflex.codegen.Generator; -import com.mybatisflex.codegen.config.ColumnConfig; -import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.*; import com.mybatisflex.core.service.IService; import com.mybatisflex.spring.service.impl.ServiceImpl; import com.zaxxer.hikari.HikariDataSource; @@ -16,38 +15,37 @@ public class Main { private final static String USERNAME = "cashier"; private final static String PASSWORD = "Cashier@1@"; 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) { + + // packageName 指定生成代码项目 + // tableName 指定需要生成的表 + +// String servicePackageName = "system"; +// String servicePackageName = "account"; +// String servicePackageName = "product"; + String packageName = "order"; + + String tableName = "tb_order_info"; + //配置数据源 HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl("jdbc:mysql://" + BASE_URL + ":" + PORT + "/" + DATABASE); dataSource.setUsername(USERNAME); dataSource.setPassword(PASSWORD); - String currentWorkingDirectory = System.getProperty("user.dir"); - String projectPath = currentWorkingDirectory + "/cash-service/system-service"; -// String projectPath = currentWorkingDirectory + "/cash-service/account-service"; -// String projectPath = currentWorkingDirectory + "/cash-service/product-service"; -// String projectPath = currentWorkingDirectory + "/cash-service/order-service"; - - String packageName = "com.czg.service.system"; -// String packageName = "com.czg.service.account"; -// String packageName = "com.czg.service.product"; -// String packageName = "com.czg.service.order"; - - String servicePackageName = "com.czg.system"; -// String servicePackageName = "com.czg.account"; -// String servicePackageName = "com.czg.product"; -// String servicePackageName = "com.czg.order"; + String projectPath = currentWorkingDirectory + "/cash-service/" + packageName + "-service"; // 生成 mapper 和 service实现 - GlobalConfig globalConfig = createGlobalConfigUseStyle(projectPath, packageName, "tb", "tb_version"); + GlobalConfig globalConfig = createGlobalConfigUseStyle(projectPath, packageName, "tb", tableName); Generator generator = new Generator(dataSource, globalConfig); generator.generate(); // 生成 entity 和 service GlobalConfig serviceConfig = createServiceGlobalConfigUseStyle(currentWorkingDirectory + "/cash-common/cash-common-service", - servicePackageName, "tb", "tb_version"); + basePackage + packageName, "tb", tableName); Generator serviceGenerator = new Generator(dataSource, serviceConfig); serviceGenerator.generate(); } @@ -59,12 +57,23 @@ public class Main { //设置根包 globalConfig.getPackageConfig() .setSourceDir(projectPath + "/src/main/java") - .setBasePackage(packageName); + + .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"); @@ -106,7 +115,7 @@ public class Main { //设置生成 entity 并启用 Lombok globalConfig.enableEntity() .setWithLombok(true) - .setJdkVersion(23); + .setJdkVersion(21); //可以单独配置某个列 ColumnConfig createTime = new ColumnConfig(); diff --git a/cash-service/code-generator/src/main/resources/templates/serviceImpl.tpl b/cash-service/code-generator/src/main/resources/templates/serviceImpl.tpl new file mode 100644 index 00000000..183aaa96 --- /dev/null +++ b/cash-service/code-generator/src/main/resources/templates/serviceImpl.tpl @@ -0,0 +1,185 @@ +#set(isCacheExample = serviceImplConfig.cacheExample) +#set(primaryKey = table.getPrimaryKey().getProperty()) +#set(entityClassName = table.buildEntityClassName()) +package #(packageConfig.serviceImplPackage); + +import #(serviceImplConfig.buildSuperClassImport()); +import #(packageConfig.entityPackage).#(table.buildEntityClassName()); +import #(packageConfig.servicePackage).#(table.buildServiceClassName()); +import #(packageConfig.mapperPackage).#(table.buildMapperClassName()); +import org.springframework.stereotype.Service; +#if(isCacheExample) +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; +#end + +/** + * #(table.getComment()) 服务层实现。 + * + * @author #(javadocConfig.getAuthor()) + * @since #(javadocConfig.getSince()) + */ +@Service +#if(isCacheExample) +@CacheConfig(cacheNames = "#(firstCharToLowerCase(entityClassName))") +#end +public class #(table.buildServiceImplClassName()) extends #(serviceImplConfig.buildSuperClassName())<#(table.buildMapperClassName()), #(table.buildEntityClassName())> implements #(table.buildServiceClassName()){ + +#if(isCacheExample) + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @CacheEvict(allEntries = true) + public boolean remove(QueryWrapper query) { + return super.remove(query); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @CacheEvict(key = "#id") + public boolean removeById(Serializable id) { + return super.removeById(id); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @CacheEvict(allEntries = true) + public boolean removeByIds(Collection ids) { + return super.removeByIds(ids); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @CacheEvict(allEntries = true) + public boolean update(#(entityClassName) entity, QueryWrapper query) { + return super.update(entity, query); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @CacheEvict(key = "#entity.#(primaryKey)") + public boolean updateById(#(entityClassName) entity, boolean ignoreNulls) { + return super.updateById(entity, ignoreNulls); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @CacheEvict(allEntries = true) + public boolean updateBatch(Collection<#(entityClassName)> entities, int batchSize) { + return super.updateBatch(entities, batchSize); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#id") + public #(entityClassName) getById(Serializable id) { + return super.getById(id); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public #(entityClassName) getOne(QueryWrapper query) { + return super.getOne(query); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public R getOneAs(QueryWrapper query, Class asType) { + return super.getOneAs(query, asType); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public Object getObj(QueryWrapper query) { + return super.getObj(query); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public R getObjAs(QueryWrapper query, Class asType) { + return super.getObjAs(query, asType); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public List objList(QueryWrapper query) { + return super.objList(query); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public List objListAs(QueryWrapper query, Class asType) { + return super.objListAs(query, asType); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public List<#(entityClassName)> list(QueryWrapper query) { + return super.list(query); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public List listAs(QueryWrapper query, Class asType) { + return super.listAs(query, asType); + } + + /** + * @deprecated 无法通过注解进行缓存操作。 + */ +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Deprecated + public List<#(entityClassName)> listByIds(Collection ids) { + return super.listByIds(ids); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #query.toSQL()") + public long count(QueryWrapper query) { + return super.count(query); + } + +#if(table.getGlobalConfig().isServiceGenerateEnable()) + @Override +#end + @Cacheable(key = "#root.methodName + ':' + #page.getPageSize() + ':' + #page.getPageNumber() + ':' + #query.toSQL()") + public Page pageAs(Page page, QueryWrapper query, Class asType) { + return super.pageAs(page, query, asType); + } + +#end +}