From c37e96898e80c73ca05c6c4b4a3e403855fa1331 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Mon, 15 May 2023 19:42:14 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8=EF=BC=8C=E4=BD=BF=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=88=86=E9=A1=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mybatisflex/codegen/Generator.java | 8 +- .../codegen/config/ControllerConfig.java | 59 ++ .../codegen/config/EntityConfig.java | 58 ++ .../codegen/config/GlobalConfig.java | 738 +++--------------- .../codegen/config/MapperConfig.java | 55 ++ .../codegen/config/PackageConfig.java | 106 +++ .../codegen/config/ServiceConfig.java | 55 ++ .../codegen/config/ServiceImplConfig.java | 55 ++ .../codegen/config/StrategyConfig.java | 173 ++++ .../codegen/config/TableDefConfig.java | 41 + .../com/mybatisflex/codegen/entity/Table.java | 97 +-- .../generator/impl/ControllerGenerator.java | 19 +- .../generator/impl/EntityGenerator.java | 34 +- .../generator/impl/MapperGenerator.java | 26 +- .../generator/impl/ServiceGenerator.java | 19 +- .../generator/impl/ServiceImplGenerator.java | 19 +- .../generator/impl/TableDefGenerator.java | 29 +- .../resources/templates/enjoy/controller.tpl | 14 +- .../main/resources/templates/enjoy/entity.tpl | 4 +- .../main/resources/templates/enjoy/mapper.tpl | 8 +- .../resources/templates/enjoy/service.tpl | 8 +- .../resources/templates/enjoy/serviceImpl.tpl | 12 +- .../resources/templates/enjoy/tableDef.tpl | 2 +- 23 files changed, 875 insertions(+), 764 deletions(-) create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ControllerConfig.java create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/MapperConfig.java create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/PackageConfig.java create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceConfig.java create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceImplConfig.java create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/StrategyConfig.java create mode 100644 mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/TableDefConfig.java diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java index ce9c8f4e..65af4dde 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java @@ -16,6 +16,7 @@ package com.mybatisflex.codegen; import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.StrategyConfig; import com.mybatisflex.codegen.dialect.IDialect; import com.mybatisflex.codegen.entity.Table; import com.mybatisflex.codegen.generator.GeneratorFactory; @@ -83,17 +84,18 @@ public class Generator { private List buildTables() throws SQLException { + StrategyConfig strategyConfig = globalConfig.getStrategyConfig(); List
tables = new ArrayList<>(); try (ResultSet rs = getTablesResultSet()) { while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); - if (!globalConfig.isSupportGenerate(tableName)) { + if (!strategyConfig.isSupportGenerate(tableName)) { continue; } Table table = new Table(); table.setGlobalConfig(globalConfig); - table.setTableConfig(globalConfig.getTableConfig(tableName)); + table.setTableConfig(strategyConfig.getTableConfig(tableName)); table.setName(tableName); @@ -113,7 +115,7 @@ public class Generator { protected ResultSet getTablesResultSet() throws SQLException { - if (globalConfig.isGenerateForView()) { + if (globalConfig.getStrategyConfig().isGenerateForView()) { return dialect.getTablesResultSet(dbMeta, conn, new String[]{"TABLE", "VIEW"}); } else { return dialect.getTablesResultSet(dbMeta, conn, new String[]{"TABLE"}); diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ControllerConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ControllerConfig.java new file mode 100644 index 00000000..38686ef4 --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ControllerConfig.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mybatisflex.codegen.config; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 生成 Controller 的配置。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Data +@Accessors(chain = true) +public class ControllerConfig { + + /** + * Controller 类的前缀。 + */ + private String classPrefix = ""; + + /** + * Controller 类的后缀。 + */ + private String classSuffix = "Controller"; + + /** + * 自定义 Controller 的父类。 + */ + private Class supperClass; + + /** + * 生成 REST 风格的 Controller。 + */ + private boolean restStyle = true; + + public String buildSuperClassImport() { + return supperClass.getName(); + } + + public String buildSuperClassName() { + return supperClass.getSimpleName(); + } + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java new file mode 100644 index 00000000..4cab2f59 --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mybatisflex.codegen.config; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 生成 Entity 的配置。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Data +@Accessors(chain = true) +public class EntityConfig { + + /** + * Entity 类的前缀。 + */ + private String classPrefix = ""; + + /** + * Entity 类的后缀。 + */ + private String classSuffix = ""; + + /** + * Entity 类的父类,可以自定义一些 BaseEntity 类。 + */ + private Class supperClass; + + /** + * Entity 默认实现的接口。 + */ + private Class[] implInterfaces = {Serializable.class}; + + /** + * Entity 是否使用 Lombok 注解。 + */ + private boolean withLombok; + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java index 438b3de0..941e1adb 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java @@ -15,692 +15,154 @@ */ package com.mybatisflex.codegen.config; -import com.mybatisflex.codegen.template.EnjoyTemplate; -import com.mybatisflex.codegen.template.ITemplate; -import com.mybatisflex.core.BaseMapper; -import com.mybatisflex.core.util.StringUtil; -import com.mybatisflex.spring.service.IService; -import com.mybatisflex.spring.service.impl.ServiceImpl; +import lombok.Getter; -import java.io.Serializable; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; +/** + * 代码生成全局配置类。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Getter +@SuppressWarnings("unused") public class GlobalConfig { - //代码生成目录 - private String sourceDir; + // === 必须配置 === - //根包名 - private String basePackage = "com.mybatisflex"; + private final PackageConfig packageConfig; + private final StrategyConfig strategyConfig; - //entity 的包名 - private String entityPackage; + // === 可选配置 === - //entity 类的前缀 - private String entityClassPrefix; + private EntityConfig entityConfig; + private MapperConfig mapperConfig; + private ServiceConfig serviceConfig; + private ServiceImplConfig serviceImplConfig; + private ControllerConfig controllerConfig; + private TableDefConfig tableDefConfig; - //entity 类的后缀 - private String entityClassSuffix; + // === 其他配置 === - //entity 类的父类,可以自定义一些 BaseEntity 类 - private Class entitySupperClass; + private Map customConfig; - //entity 默认实现的接口 - private Class[] entityInterfaces = {Serializable.class}; + // === 是否启用生成 === - //entity 是否使用 Lombok - private boolean entityWithLombok = false; + private boolean entityGenerateEnable; + private boolean mapperGenerateEnable; + private boolean serviceGenerateEnable; + private boolean serviceImplGenerateEnable; + private boolean controllerGenerateEnable; + private boolean tableDefGenerateEnable; - private boolean tableDefGenerateEnable = false; + public GlobalConfig() { + this.packageConfig = new PackageConfig(); + this.strategyConfig = new StrategyConfig(); + } - //tableDef 的包名 - private String tableDefPackage; - - //tableDef 类的前缀 - private String tableDefClassPrefix; - - //tableDef 类的后缀 - private String tableDefClassSuffix = "Def"; - - //是否生成 mapper 类 - private boolean mapperGenerateEnable = false; - - //是否覆盖已经存在的 mapper - private boolean mapperOverwriteEnable = false; - - //mapper 类的前缀 - private String mapperClassPrefix; - - //mapper 类的后缀 - private String mapperClassSuffix = "Mapper"; - - //mapper 的包名 - private String mapperPackage; - - //自定义 mapper 的父类 - private Class mapperSupperClass = BaseMapper.class; - - //是否生成 service 类 - private boolean serviceGenerateEnable = false; - - //是否覆盖已经存在的 service - private boolean serviceOverwriteEnable = false; - - //service 类的前缀 - private String serviceClassPrefix; - - //service 类的后缀 - private String serviceClassSuffix = "Service"; - - //service 的包名 - private String servicePackage; - - //自定义 service 的父类 - private Class serviceSupperClass = IService.class; - - //是否生成 serviceImpl 类 - private boolean serviceImplGenerateEnable = false; - - //是否覆盖已经存在的 serviceImpl - private boolean serviceImplOverwriteEnable = false; - - //serviceImpl 类的前缀 - private String serviceImplClassPrefix; - - //serviceImpl 类的后缀 - private String serviceImplClassSuffix = "ServiceImpl"; - - //serviceImpl 的包名 - private String serviceImplPackage; - - //自定义 serviceImpl 的父类 - private Class serviceImplSupperClass = ServiceImpl.class; - - //是否生成 controller 类 - private boolean controllerGenerateEnable = false; - - //是否覆盖已经存在的 controller - private boolean controllerOverwriteEnable = false; - - //controller 类的前缀 - private String controllerClassPrefix; - - //controller 类的后缀 - private String controllerClassSuffix = "Controller"; - - //controller 的包名 - private String controllerPackage; - - //自定义 controller 的父类 - private Class controllerSupperClass; - - //rest 风格的 Controller - private boolean restStyleController = true; - - //数据库表前缀,多个前缀用英文逗号(,) 隔开 - private String tablePrefix; - - //逻辑删除的默认字段名称 - private String logicDeleteColumn; - - //乐观锁的字段名称 - private String versionColumn; - - //是否生成视图映射 - private boolean generateForView = false; - - //单独为某张表添加独立的配置 - private Map tableConfigMap; - - //设置某个列的全局配置 - private Map defaultColumnConfigMap; - - //生成那些表,白名单 - private Set generateTables; - - //不生成那些表,黑名单 - private Set unGenerateTables; - - //使用哪个模板引擎来生成代码 - protected ITemplate templateEngine; - - //其他自定义配置 - private Map others; - - - public String getSourceDir() { - if (sourceDir == null || sourceDir.trim().length() == 0) { - return System.getProperty("user.dir") + "/src/main/java"; + public EntityConfig getEntityConfig() { + if (entityConfig == null) { + entityConfig = new EntityConfig(); } - return sourceDir; + return entityConfig; } - public void setSourceDir(String sourceDir) { - this.sourceDir = StringUtil.trimOrNull(sourceDir); - } - - public String getBasePackage() { - return basePackage; - } - - public void setBasePackage(String basePackage) { - this.basePackage = StringUtil.trimOrNull(basePackage); - } - - public String getEntityPackage() { - if (StringUtil.isBlank(entityPackage)) { - entityPackage = basePackage + ".entity"; + public MapperConfig getMapperConfig() { + if (mapperConfig == null) { + mapperConfig = new MapperConfig(); } - return entityPackage; + return mapperConfig; } - public void setEntityPackage(String entityPackage) { - this.entityPackage = StringUtil.trimOrNull(entityPackage); - } - - public String getEntityClassPrefix() { - if (StringUtil.isBlank(entityClassPrefix)) { - return ""; + public ServiceConfig getServiceConfig() { + if (serviceConfig == null) { + serviceConfig = new ServiceConfig(); } - return entityClassPrefix; + return serviceConfig; } - public void setEntityClassPrefix(String entityClassPrefix) { - this.entityClassPrefix = StringUtil.trimOrNull(entityClassPrefix); - } - - public String getEntityClassSuffix() { - if (StringUtil.isBlank(entityClassSuffix)) { - return ""; + public ServiceImplConfig getServiceImplConfig() { + if (serviceImplConfig == null) { + serviceImplConfig = new ServiceImplConfig(); } - return entityClassSuffix; + return serviceImplConfig; } - public void setEntityClassSuffix(String entityClassSuffix) { - this.entityClassSuffix = StringUtil.trimOrNull(entityClassSuffix); - } - - public Class getEntitySupperClass() { - return entitySupperClass; - } - - public void setEntitySupperClass(Class entitySupperClass) { - this.entitySupperClass = entitySupperClass; - } - - public Class[] getEntityInterfaces() { - return entityInterfaces; - } - - public void setEntityInterfaces(Class[] entityInterfaces) { - this.entityInterfaces = entityInterfaces; - } - - public boolean isEntityWithLombok() { - return entityWithLombok; - } - - public void setEntityWithLombok(boolean entityWithLombok) { - this.entityWithLombok = entityWithLombok; - } - - public boolean isTableDefGenerateEnable() { - return tableDefGenerateEnable; - } - - public void setTableDefGenerateEnable(boolean tableDefGenerateEnable) { - this.tableDefGenerateEnable = tableDefGenerateEnable; - } - - public String getTableDefPackage() { - if (StringUtil.isBlank(tableDefPackage)) { - return getEntityPackage() + ".tables"; + public ControllerConfig getControllerConfig() { + if (controllerConfig == null) { + controllerConfig = new ControllerConfig(); } - return tableDefPackage; + return controllerConfig; } - public void setTableDefPackage(String tableDefPackage) { - this.tableDefPackage = StringUtil.trimOrNull(tableDefPackage); - } - - public String getTableDefClassPrefix() { - if (StringUtil.isBlank(tableDefClassPrefix)) { - return ""; + public TableDefConfig getTableDefConfig() { + if (tableDefConfig == null) { + tableDefConfig = new TableDefConfig(); } - return tableDefClassPrefix; + return tableDefConfig; } - public void setTableDefClassPrefix(String tableDefClassPrefix) { - this.tableDefClassPrefix = StringUtil.trimOrNull(tableDefClassPrefix); + public EntityConfig enableEntity() { + entityGenerateEnable = true; + return getEntityConfig(); } - public String getTableDefClassSuffix() { - return tableDefClassSuffix; + public MapperConfig enableMapper() { + mapperGenerateEnable = true; + return getMapperConfig(); } - public void setTableDefClassSuffix(String tableDefClassSuffix) { - this.tableDefClassSuffix = StringUtil.trimOrNull(tableDefClassSuffix); + public ServiceConfig enableService() { + serviceGenerateEnable = true; + return getServiceConfig(); } - public boolean isMapperGenerateEnable() { - return mapperGenerateEnable; + public ServiceImplConfig enableServiceImpl() { + serviceImplGenerateEnable = true; + return getServiceImplConfig(); } - public void setMapperGenerateEnable(boolean mapperGenerateEnable) { - this.mapperGenerateEnable = mapperGenerateEnable; + public ControllerConfig enableController() { + controllerGenerateEnable = true; + return getControllerConfig(); } - public boolean isMapperOverwriteEnable() { - return mapperOverwriteEnable; + public TableDefConfig enableTableDef() { + tableDefGenerateEnable = true; + return getTableDefConfig(); } - public void setMapperOverwriteEnable(boolean mapperOverwriteEnable) { - this.mapperOverwriteEnable = mapperOverwriteEnable; + public void disableEntity() { + entityGenerateEnable = false; } - public String getMapperClassPrefix() { - if (StringUtil.isBlank(mapperClassPrefix)) { - return ""; + public void disableMapper() { + mapperGenerateEnable = false; + } + + public void disableService() { + serviceGenerateEnable = false; + } + + public void disableServiceImpl() { + serviceImplGenerateEnable = false; + } + + public void disableController() { + controllerGenerateEnable = false; + } + + public void disableTableDef() { + tableDefGenerateEnable = false; + } + + public void addCustomConfig(String key, Object value) { + if (customConfig == null) { + customConfig = new HashMap<>(); } - return mapperClassPrefix; + customConfig.put(key, value); } - public void setMapperClassPrefix(String mapperClassPrefix) { - this.mapperClassPrefix = StringUtil.trimOrNull(mapperClassPrefix); - } - - public String getMapperClassSuffix() { - return mapperClassSuffix; - } - - public void setMapperClassSuffix(String mapperClassSuffix) { - this.mapperClassSuffix = StringUtil.trimOrNull(mapperClassSuffix); - } - - public String getMapperPackage() { - if (StringUtil.isBlank(mapperPackage)) { - mapperPackage = basePackage + ".mapper"; - } - return mapperPackage; - } - - public void setMapperPackage(String mapperPackage) { - this.mapperPackage = StringUtil.trimOrNull(mapperPackage); - } - - public Class getMapperSupperClass() { - return mapperSupperClass; - } - - public void setMapperSupperClass(Class mapperSupperClass) { - this.mapperSupperClass = mapperSupperClass; - } - - public boolean isServiceGenerateEnable() { - return serviceGenerateEnable; - } - - public void setServiceGenerateEnable(boolean serviceGenerateEnable) { - this.serviceGenerateEnable = serviceGenerateEnable; - } - - public boolean isServiceOverwriteEnable() { - return serviceOverwriteEnable; - } - - public void setServiceOverwriteEnable(boolean serviceOverwriteEnable) { - this.serviceOverwriteEnable = serviceOverwriteEnable; - } - - public String getServiceClassPrefix() { - if (StringUtil.isBlank(serviceClassPrefix)) { - return ""; - } - return serviceClassPrefix; - } - - public void setServiceClassPrefix(String serviceClassPrefix) { - this.serviceClassPrefix = StringUtil.trimOrNull(serviceClassPrefix); - } - - public String getServiceClassSuffix() { - return serviceClassSuffix; - } - - public void setServiceClassSuffix(String serviceClassSuffix) { - this.serviceClassSuffix = StringUtil.trimOrNull(serviceClassSuffix); - } - - public String getServicePackage() { - if (StringUtil.isBlank(servicePackage)) { - servicePackage = basePackage + ".service"; - } - return servicePackage; - } - - public void setServicePackage(String servicePackage) { - this.servicePackage = StringUtil.trimOrNull(servicePackage); - } - - public Class getServiceSupperClass() { - return serviceSupperClass; - } - - public void setServiceSupperClass(Class serviceSupperClass) { - this.serviceSupperClass = serviceSupperClass; - } - - public boolean isServiceImplGenerateEnable() { - return serviceImplGenerateEnable; - } - - public void setServiceImplGenerateEnable(boolean serviceImplGenerateEnable) { - this.serviceImplGenerateEnable = serviceImplGenerateEnable; - } - - public boolean isServiceImplOverwriteEnable() { - return serviceImplOverwriteEnable; - } - - public void setServiceImplOverwriteEnable(boolean serviceImplOverwriteEnable) { - this.serviceImplOverwriteEnable = serviceImplOverwriteEnable; - } - - public String getServiceImplClassPrefix() { - if (StringUtil.isBlank(serviceImplClassPrefix)) { - return ""; - } - return serviceImplClassPrefix; - } - - public void setServiceImplClassPrefix(String serviceImplClassPrefix) { - this.serviceImplClassPrefix = StringUtil.trimOrNull(serviceImplClassPrefix); - } - - public String getServiceImplClassSuffix() { - return serviceImplClassSuffix; - } - - public void setServiceImplClassSuffix(String serviceImplClassSuffix) { - this.serviceImplClassSuffix = StringUtil.trimOrNull(serviceImplClassSuffix); - } - - public String getServiceImplPackage() { - if (StringUtil.isBlank(serviceImplPackage)) { - serviceImplPackage = basePackage + ".service.impl"; - } - return serviceImplPackage; - } - - public void setServiceImplPackage(String serviceImplPackage) { - this.serviceImplPackage = StringUtil.trimOrNull(serviceImplPackage); - } - - public Class getServiceImplSupperClass() { - return serviceImplSupperClass; - } - - public void setServiceImplSupperClass(Class serviceImplSupperClass) { - this.serviceImplSupperClass = serviceImplSupperClass; - } - - public boolean isControllerGenerateEnable() { - return controllerGenerateEnable; - } - - public void setControllerGenerateEnable(boolean controllerGenerateEnable) { - this.controllerGenerateEnable = controllerGenerateEnable; - } - - public boolean isControllerOverwriteEnable() { - return controllerOverwriteEnable; - } - - public void setControllerOverwriteEnable(boolean controllerOverwriteEnable) { - this.controllerOverwriteEnable = controllerOverwriteEnable; - } - - public String getControllerClassPrefix() { - if (StringUtil.isBlank(controllerClassPrefix)) { - return ""; - } - return controllerClassPrefix; - } - - public void setControllerClassPrefix(String controllerClassPrefix) { - this.controllerClassPrefix = StringUtil.trimOrNull(controllerClassPrefix); - } - - public String getControllerClassSuffix() { - return controllerClassSuffix; - } - - public void setControllerClassSuffix(String controllerClassSuffix) { - this.controllerClassSuffix = StringUtil.trimOrNull(controllerClassSuffix); - } - - public String getControllerPackage() { - if (StringUtil.isBlank(controllerPackage)) { - controllerPackage = basePackage + ".controller"; - } - return controllerPackage; - } - - public void setControllerPackage(String controllerPackage) { - this.controllerPackage = StringUtil.trimOrNull(controllerPackage); - } - - public Class getControllerSupperClass() { - return controllerSupperClass; - } - - public void setControllerSupperClass(Class controllerSupperClass) { - this.controllerSupperClass = controllerSupperClass; - } - - public boolean isRestStyleController() { - return restStyleController; - } - - public void setRestStyleController(boolean restStyleController) { - this.restStyleController = restStyleController; - } - - public String getTablePrefix() { - return tablePrefix; - } - - public void setTablePrefix(String tablePrefix) { - this.tablePrefix = StringUtil.trimOrNull(tablePrefix); - } - - public String getLogicDeleteColumn() { - return logicDeleteColumn; - } - - public void setLogicDeleteColumn(String logicDeleteColumn) { - this.logicDeleteColumn = StringUtil.trimOrNull(logicDeleteColumn); - } - - public String getVersionColumn() { - return versionColumn; - } - - public void setVersionColumn(String versionColumn) { - this.versionColumn = StringUtil.trimOrNull(versionColumn); - } - - public Map getTableConfigMap() { - return tableConfigMap; - } - - public void setTableConfigMap(Map tableConfigMap) { - this.tableConfigMap = tableConfigMap; - } - - public void addTableConfig(TableConfig tableConfig) { - if (tableConfigMap == null) { - tableConfigMap = new HashMap<>(); - } - tableConfigMap.put(tableConfig.getTableName(), tableConfig); - } - - public TableConfig getTableConfig(String tableName) { - return tableConfigMap == null ? null : tableConfigMap.get(tableName); - } - - public Map getDefaultColumnConfigMap() { - return defaultColumnConfigMap; - } - - public void setDefaultColumnConfigMap(Map defaultColumnConfigMap) { - this.defaultColumnConfigMap = defaultColumnConfigMap; - } - - - public void addColumnConfig(ColumnConfig columnConfig) { - if (defaultColumnConfigMap == null) { - defaultColumnConfigMap = new HashMap<>(); - } - defaultColumnConfigMap.put(columnConfig.getColumnName(), columnConfig); - } - - public void addColumnConfig(String tableName, ColumnConfig columnConfig) { - TableConfig tableConfig = getTableConfig(tableName); - if (tableConfig == null) { - tableConfig = new TableConfig(); - tableConfig.setTableName(tableName); - addTableConfig(tableConfig); - } - - tableConfig.addColumnConfig(columnConfig); - } - - - public ColumnConfig getColumnConfig(String tableName, String columnName) { - ColumnConfig columnConfig = null; - - TableConfig tableConfig = getTableConfig(tableName); - if (tableConfig != null) { - columnConfig = tableConfig.getColumnConfig(columnName); - } - - if (columnConfig == null && defaultColumnConfigMap != null) { - columnConfig = defaultColumnConfigMap.get(columnName); - } - - if (columnConfig == null) { - columnConfig = new ColumnConfig(); - } - - //全局配置的逻辑删除 - if (columnName.equals(logicDeleteColumn) && columnConfig.getLogicDelete() == null) { - columnConfig.setLogicDelete(true); - } - - //全部配置的乐观锁版本 - if (columnName.equals(versionColumn) && columnConfig.getVersion() == null) { - columnConfig.setVersion(true); - } - - - return columnConfig; - } - - public boolean isGenerateForView() { - return generateForView; - } - - public void setGenerateForView(boolean generateForView) { - this.generateForView = generateForView; - } - - public Set getGenerateTables() { - return generateTables; - } - - public void setGenerateTables(Set generateTables) { - this.generateTables = generateTables; - } - - public void addGenerateTable(String... tables) { - if (generateTables == null) { - generateTables = new HashSet<>(); - } - - for (String table : tables) { - if (table != null && table.trim().length() > 0) { - generateTables.add(table.trim()); - } - } - } - - public Set getUnGenerateTables() { - return unGenerateTables; - } - - public void setUnGenerateTables(Set unGenerateTables) { - this.unGenerateTables = unGenerateTables; - } - - - public void addUnGenerateTable(String... tables) { - if (unGenerateTables == null) { - unGenerateTables = new HashSet<>(); - } - - for (String table : tables) { - if (table != null && table.trim().length() > 0) { - unGenerateTables.add(table.trim()); - } - } - } - - public boolean isSupportGenerate(String table) { - if (unGenerateTables != null && unGenerateTables.contains(table)) { - return false; - } - - //不配置指定比表名的情况下,支持所有表 - if (generateTables == null || generateTables.isEmpty()) { - return true; - } - - for (String generateTable : generateTables) { - if (generateTable.equals(table)) { - return true; - } - } - - return false; - } - - public ITemplate getTemplateEngine() { - if (templateEngine == null) { - templateEngine = new EnjoyTemplate(); - } - return templateEngine; - } - - public void setTemplateEngine(ITemplate templateEngine) { - this.templateEngine = templateEngine; - } - - public Map getOthers() { - return others; - } - - public void setOthers(Map others) { - this.others = others; - } - - public void addConfig(String key, Object value) { - if (others == null) { - others = new HashMap<>(); - } - others.put(key, value); - } } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/MapperConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/MapperConfig.java new file mode 100644 index 00000000..6f6e8745 --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/MapperConfig.java @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mybatisflex.codegen.config; + +import com.mybatisflex.core.BaseMapper; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 生成 Mapper 的配置。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Data +@Accessors(chain = true) +public class MapperConfig { + + /** + * Mapper 类的前缀。 + */ + private String classPrefix = ""; + + /** + * Mapper 类的后缀。 + */ + private String classSuffix = "Mapper"; + + /** + * 自定义 Mapper 的父类。 + */ + private Class supperClass = BaseMapper.class; + + public String buildSuperClassImport() { + return supperClass.getName(); + } + + public String buildSuperClassName() { + return supperClass.getSimpleName(); + } + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/PackageConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/PackageConfig.java new file mode 100644 index 00000000..4289ec1c --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/PackageConfig.java @@ -0,0 +1,106 @@ +package com.mybatisflex.codegen.config; + +import com.mybatisflex.core.util.StringUtil; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 生成软件包的配置。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Data +@Accessors(chain = true) +public class PackageConfig { + + /** + * 代码生成目录。 + */ + private String sourceDir; + + /** + * 根包。 + */ + private String basePackage = "com.mybatisflex"; + + /** + * Entity 所在包。 + */ + private String entityPackage; + + /** + * Mapper 所在包。 + */ + private String mapperPackage; + + /** + * Service 所在包。 + */ + private String servicePackage; + + /** + * ServiceImpl 所在包。 + */ + private String serviceImplPackage; + + /** + * Controller 所在包。 + */ + private String controllerPackage; + + /** + * TableDef 所在包。 + */ + private String tableDefPackage; + + public String getSourceDir() { + if (sourceDir == null || StringUtil.isBlank(sourceDir)) { + return System.getProperty("user.dir") + "/src/main/java"; + } + return sourceDir; + } + + public String getEntityPackage() { + if (StringUtil.isBlank(entityPackage)) { + return basePackage.concat(".entity"); + } + return entityPackage; + } + + public String getMapperPackage() { + if (StringUtil.isBlank(mapperPackage)) { + return basePackage.concat(".mapper"); + } + return mapperPackage; + } + + public String getServicePackage() { + if (StringUtil.isBlank(servicePackage)) { + return basePackage.concat(".service"); + } + return servicePackage; + } + + public String getServiceImplPackage() { + if (StringUtil.isBlank(serviceImplPackage)) { + return basePackage.concat(".service.impl"); + } + return serviceImplPackage; + } + + public String getControllerPackage() { + if (StringUtil.isBlank(controllerPackage)) { + return basePackage.concat(".controller"); + } + return controllerPackage; + } + + public String getTableDefPackage() { + if (StringUtil.isBlank(tableDefPackage)) { + return getEntityPackage().concat(".tables"); + } + return tableDefPackage; + } + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceConfig.java new file mode 100644 index 00000000..5c17b8df --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceConfig.java @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mybatisflex.codegen.config; + +import com.mybatisflex.spring.service.IService; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 生成 Service 的配置。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Data +@Accessors(chain = true) +public class ServiceConfig { + + /** + * Service 类的前缀。 + */ + private String classPrefix = ""; + + /** + * Service 类的后缀。 + */ + private String classSuffix = "Service"; + + /** + * 自定义 Service 的父类。 + */ + private Class supperClass = IService.class; + + public String buildSuperClassImport() { + return supperClass.getName(); + } + + public String buildSuperClassName() { + return supperClass.getSimpleName(); + } + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceImplConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceImplConfig.java new file mode 100644 index 00000000..6956cac5 --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ServiceImplConfig.java @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mybatisflex.codegen.config; + +import com.mybatisflex.spring.service.impl.ServiceImpl; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 生成 ServiceImpl 的配置。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Data +@Accessors(chain = true) +public class ServiceImplConfig { + + /** + * ServiceImpl 类的前缀。 + */ + private String classPrefix = ""; + + /** + * ServiceImpl 类的后缀。 + */ + private String classSuffix = "ServiceImpl"; + + /** + * 自定义 ServiceImpl 的父类。 + */ + private Class supperClass = ServiceImpl.class; + + public String buildSuperClassImport() { + return supperClass.getName(); + } + + public String buildSuperClassName() { + return supperClass.getSimpleName(); + } + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/StrategyConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/StrategyConfig.java new file mode 100644 index 00000000..97484d9d --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/StrategyConfig.java @@ -0,0 +1,173 @@ +package com.mybatisflex.codegen.config; + +import com.mybatisflex.codegen.template.EnjoyTemplate; +import com.mybatisflex.codegen.template.ITemplate; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * 表策略配置。 + * + * @author 王帅 + * @since 2023-05-14 + */ +@Data +@Accessors(chain = true) +public class StrategyConfig { + + /** + * 使用哪个模板引擎来生成代码。 + */ + protected ITemplate templateEngine; + /** + * 数据库表前缀,多个前缀用英文逗号(,) 隔开。 + */ + private String tablePrefix; + /** + * 逻辑删除的默认字段名称。 + */ + private String logicDeleteColumn; + /** + * 乐观锁的字段名称。 + */ + private String versionColumn; + /** + * 是否生成视图映射。 + */ + private boolean generateForView; + /** + * 是否覆盖之前生成的文件。 + */ + private boolean overwriteEnable; + /** + * 单独为某张表添加独立的配置。 + */ + private Map tableConfigMap; + /** + * 设置某个列的全局配置。 + */ + private Map columnConfigMap; + /** + * 生成那些表,白名单。 + */ + private Set generateTables; + /** + * 不生成那些表,黑名单。 + */ + private Set unGenerateTables; + + public void addTableConfig(TableConfig tableConfig) { + if (tableConfigMap == null) { + tableConfigMap = new HashMap<>(); + } + tableConfigMap.put(tableConfig.getTableName(), tableConfig); + } + + public TableConfig getTableConfig(String tableName) { + return tableConfigMap == null ? null : tableConfigMap.get(tableName); + } + + public void addColumnConfig(ColumnConfig columnConfig) { + if (columnConfigMap == null) { + columnConfigMap = new HashMap<>(); + } + columnConfigMap.put(columnConfig.getColumnName(), columnConfig); + } + + public void addColumnConfig(String tableName, ColumnConfig columnConfig) { + TableConfig tableConfig = getTableConfig(tableName); + if (tableConfig == null) { + tableConfig = new TableConfig(); + tableConfig.setTableName(tableName); + addTableConfig(tableConfig); + } + + tableConfig.addColumnConfig(columnConfig); + } + + public ColumnConfig getColumnConfig(String tableName, String columnName) { + ColumnConfig columnConfig = null; + + TableConfig tableConfig = getTableConfig(tableName); + if (tableConfig != null) { + columnConfig = tableConfig.getColumnConfig(columnName); + } + + if (columnConfig == null && columnConfigMap != null) { + columnConfig = columnConfigMap.get(columnName); + } + + if (columnConfig == null) { + columnConfig = new ColumnConfig(); + } + + //全局配置的逻辑删除 + if (columnName.equals(logicDeleteColumn) && columnConfig.getLogicDelete() == null) { + columnConfig.setLogicDelete(true); + } + + //全部配置的乐观锁版本 + if (columnName.equals(versionColumn) && columnConfig.getVersion() == null) { + columnConfig.setVersion(true); + } + + + return columnConfig; + } + + public void addGenerateTable(String... tables) { + if (generateTables == null) { + generateTables = new HashSet<>(); + } + + for (String table : tables) { + if (table != null && table.trim().length() > 0) { + generateTables.add(table.trim()); + } + } + } + + public void addUnGenerateTable(String... tables) { + if (unGenerateTables == null) { + unGenerateTables = new HashSet<>(); + } + + for (String table : tables) { + if (table != null && table.trim().length() > 0) { + unGenerateTables.add(table.trim()); + } + } + } + + public boolean isSupportGenerate(String table) { + if (unGenerateTables != null && unGenerateTables.contains(table)) { + return false; + } + + //不配置指定比表名的情况下,支持所有表 + if (generateTables == null || generateTables.isEmpty()) { + return true; + } + + for (String generateTable : generateTables) { + if (generateTable.equals(table)) { + return true; + } + } + + return false; + } + + public ITemplate getTemplateEngine() { + if (templateEngine == null) { + templateEngine = new EnjoyTemplate(); + } + return templateEngine; + } + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/TableDefConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/TableDefConfig.java new file mode 100644 index 00000000..ea8e7c28 --- /dev/null +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/TableDefConfig.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mybatisflex.codegen.config; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 生成 TableDef 的配置。 + * + * @author 王帅 + * @since 2023-05-15 + */ +@Data +@Accessors(chain = true) +public class TableDefConfig { + + /** + * TableDef 类的前缀。 + */ + private String classPrefix = ""; + + /** + * TableDef 类的后缀。 + */ + private String classSuffix = "Def"; + +} \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Table.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Table.java index 5b109735..c82272bc 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Table.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Table.java @@ -15,8 +15,7 @@ */ package com.mybatisflex.codegen.entity; -import com.mybatisflex.codegen.config.GlobalConfig; -import com.mybatisflex.codegen.config.TableConfig; +import com.mybatisflex.codegen.config.*; import com.mybatisflex.core.util.StringUtil; import java.math.BigInteger; @@ -89,7 +88,7 @@ public class Table { column.setAutoIncrement(false); } - column.setColumnConfig(globalConfig.getColumnConfig(name, column.getName())); + column.setColumnConfig(globalConfig.getStrategyConfig().getColumnConfig(name, column.getName())); columns.add(column); } @@ -118,8 +117,10 @@ public class Table { imports.addAll(column.getImportClasses()); } + EntityConfig entityConfig = globalConfig.getEntityConfig(); + //开启 lombok - if (globalConfig.isEntityWithLombok()) { + if (entityConfig.isWithLombok()) { //import lombok.AllArgsConstructor; //import lombok.Builder; //import lombok.Data; @@ -130,12 +131,12 @@ public class Table { imports.add("lombok.NoArgsConstructor"); } - if (globalConfig.getEntitySupperClass() != null) { - imports.add(globalConfig.getEntitySupperClass().getName()); + if (entityConfig.getSupperClass() != null) { + imports.add(entityConfig.getSupperClass().getName()); } - if (globalConfig.getEntityInterfaces() != null) { - for (Class entityInterface : globalConfig.getEntityInterfaces()) { + if (entityConfig.getImplInterfaces() != null) { + for (Class entityInterface : entityConfig.getImplInterfaces()) { imports.add(entityInterface.getName()); } } @@ -168,7 +169,7 @@ public class Table { public String getEntityJavaFileName() { String entityJavaFileName = name; - String tablePrefix = globalConfig.getTablePrefix(); + String tablePrefix = globalConfig.getStrategyConfig().getTablePrefix(); if (tablePrefix != null) { String[] tablePrefixes = tablePrefix.split(","); for (String prefix : tablePrefixes) { @@ -189,9 +190,10 @@ public class Table { */ public String buildEntityClassName() { String entityJavaFileName = getEntityJavaFileName(); - return globalConfig.getEntityClassPrefix() + EntityConfig entityConfig = globalConfig.getEntityConfig(); + return entityConfig.getClassPrefix() + entityJavaFileName - + globalConfig.getEntityClassSuffix(); + + entityConfig.getClassSuffix(); } /** @@ -201,21 +203,23 @@ public class Table { */ public String buildTableDefClassName() { String tableDefJavaFileName = getEntityJavaFileName(); - return globalConfig.getTableDefClassPrefix() + TableDefConfig tableDefConfig = globalConfig.getTableDefConfig(); + return tableDefConfig.getClassPrefix() + tableDefJavaFileName - + globalConfig.getTableDefClassSuffix(); + + tableDefConfig.getClassSuffix(); } public String buildExtends() { - if (globalConfig.getEntitySupperClass() != null) { - return " extends " + globalConfig.getEntitySupperClass().getSimpleName(); + EntityConfig entityConfig = globalConfig.getEntityConfig(); + if (entityConfig.getSupperClass() != null) { + return " extends " + entityConfig.getSupperClass().getSimpleName(); } else { return ""; } } public String buildImplements() { - Class[] entityInterfaces = globalConfig.getEntityInterfaces(); + Class[] entityInterfaces = globalConfig.getEntityConfig().getImplInterfaces(); if (entityInterfaces != null && entityInterfaces.length > 0) { return " implements " + StringUtil.join(", ", Arrays.stream(entityInterfaces) .map(Class::getSimpleName).collect(Collectors.toList())); @@ -227,30 +231,34 @@ public class Table { public String buildMapperClassName() { String entityJavaFileName = getEntityJavaFileName(); - return globalConfig.getMapperClassPrefix() + MapperConfig mapperConfig = globalConfig.getMapperConfig(); + return mapperConfig.getClassPrefix() + entityJavaFileName - + globalConfig.getMapperClassSuffix(); + + mapperConfig.getClassSuffix(); } public String buildServiceClassName() { String entityJavaFileName = getEntityJavaFileName(); - return globalConfig.getServiceClassPrefix() + ServiceConfig serviceConfig = globalConfig.getServiceConfig(); + return serviceConfig.getClassPrefix() + entityJavaFileName - + globalConfig.getServiceClassSuffix(); + + serviceConfig.getClassSuffix(); } public String buildServiceImplClassName() { String entityJavaFileName = getEntityJavaFileName(); - return globalConfig.getServiceImplClassPrefix() + ServiceImplConfig serviceImplConfig = globalConfig.getServiceImplConfig(); + return serviceImplConfig.getClassPrefix() + entityJavaFileName - + globalConfig.getServiceImplClassSuffix(); + + serviceImplConfig.getClassSuffix(); } public String buildControllerClassName() { String entityJavaFileName = getEntityJavaFileName(); - return globalConfig.getControllerClassPrefix() + ControllerConfig controllerConfig = globalConfig.getControllerConfig(); + return controllerConfig.getClassPrefix() + entityJavaFileName - + globalConfig.getControllerClassSuffix(); + + controllerConfig.getClassSuffix(); } /** @@ -258,7 +266,7 @@ public class Table { */ public String buildTableAnnotation() { StringBuilder tableAnnotation = new StringBuilder(); - if (globalConfig.isEntityWithLombok()) { + if (globalConfig.getEntityConfig().isWithLombok()) { //@Data //@Builder //@NoArgsConstructor @@ -273,19 +281,19 @@ public class Table { if (tableConfig != null) { if (tableConfig.getSchema() != null) { - tableAnnotation.append(", schema = \"" + tableConfig.getSchema() + "\""); + tableAnnotation.append(", schema = \"").append(tableConfig.getSchema()).append("\""); } if (tableConfig.getCamelToUnderline() != null) { - tableAnnotation.append(", camelToUnderline = \"" + tableConfig.getCamelToUnderline() + "\""); + tableAnnotation.append(", camelToUnderline = \"").append(tableConfig.getCamelToUnderline()).append("\""); } if (tableConfig.getInsertListenerClass() != null) { - tableAnnotation.append(", onInsert = " + tableConfig.getInsertListenerClass().getSimpleName() + ".class"); + tableAnnotation.append(", onInsert = ").append(tableConfig.getInsertListenerClass().getSimpleName()).append(".class"); } if (tableConfig.getUpdateListenerClass() != null) { - tableAnnotation.append(", onUpdate = " + tableConfig.getUpdateListenerClass().getSimpleName() + ".class"); + tableAnnotation.append(", onUpdate = ").append(tableConfig.getUpdateListenerClass().getSimpleName()).append(".class"); } if (tableConfig.getSetListenerClass() != null) { - tableAnnotation.append(", onSet = " + tableConfig.getUpdateListenerClass().getSimpleName() + ".class"); + tableAnnotation.append(", onSet = ").append(tableConfig.getUpdateListenerClass().getSimpleName()).append(".class"); } if (Boolean.FALSE.equals(tableConfig.getMapperGenerateEnable())) { tableAnnotation.append(", mapperGenerateEnable = false"); @@ -294,35 +302,6 @@ public class Table { return tableAnnotation.append(")").toString(); } - public String buildMapperImport() { - return globalConfig.getMapperSupperClass().getName(); - } - - public String buildServiceImport() { - return globalConfig.getServiceSupperClass().getName(); - } - - public String buildServiceImplImport() { - return globalConfig.getServiceImplSupperClass().getName(); - } - - public String buildMapperName() { - return globalConfig.getMapperSupperClass().getSimpleName(); - } - - public String buildServiceName() { - return globalConfig.getServiceSupperClass().getSimpleName(); - } - - public String buildServiceImplName() { - return globalConfig.getServiceImplSupperClass().getSimpleName(); - } - - public String buildControllerName() { - return globalConfig.getControllerSupperClass().getSimpleName(); - } - - @Override public String toString() { return "Table{" + diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java index c1d77333..949e06f0 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java @@ -16,6 +16,8 @@ package com.mybatisflex.codegen.generator.impl; import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.PackageConfig; +import com.mybatisflex.codegen.config.StrategyConfig; import com.mybatisflex.codegen.entity.Table; import com.mybatisflex.codegen.generator.IGenerator; @@ -29,7 +31,6 @@ import java.util.Map; * @author 王帅 * @since 2023-05-14 */ -@SuppressWarnings("unused") public class ControllerGenerator implements IGenerator { private String templatePath = "/templates/enjoy/controller.tpl"; @@ -47,21 +48,25 @@ public class ControllerGenerator implements IGenerator { if (!globalConfig.isControllerGenerateEnable()) { return; } + + PackageConfig packageConfig = globalConfig.getPackageConfig(); + StrategyConfig strategyConfig = globalConfig.getStrategyConfig(); - String controllerPackagePath = globalConfig.getControllerPackage().replace(".", "/"); - File controllerJavaFile = new File(globalConfig.getSourceDir(), controllerPackagePath + "/" + + String controllerPackagePath = packageConfig.getControllerPackage().replace(".", "/"); + File controllerJavaFile = new File(packageConfig.getSourceDir(), controllerPackagePath + "/" + table.buildControllerClassName() + ".java"); - if (controllerJavaFile.exists() && !globalConfig.isControllerOverwriteEnable()) { + if (controllerJavaFile.exists() && strategyConfig.isOverwriteEnable()) { return; } - Map params = new HashMap<>(2); + Map params = new HashMap<>(3); params.put("table", table); - params.put("globalConfig", globalConfig); + params.put("packageConfig", packageConfig); + params.put("controllerConfig", globalConfig.getControllerConfig()); - globalConfig.getTemplateEngine().generate(params, templatePath, controllerJavaFile); + strategyConfig.getTemplateEngine().generate(params, templatePath, controllerJavaFile); } } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java index 48779059..18aeb330 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java @@ -16,6 +16,8 @@ package com.mybatisflex.codegen.generator.impl; import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.PackageConfig; +import com.mybatisflex.codegen.config.StrategyConfig; import com.mybatisflex.codegen.entity.Table; import com.mybatisflex.codegen.generator.IGenerator; @@ -23,6 +25,12 @@ import java.io.File; import java.util.HashMap; import java.util.Map; +/** + * Entity 生成器。 + * + * @author Michael Yang + * @author 王帅 + */ public class EntityGenerator implements IGenerator { private String templatePath = "/templates/enjoy/entity.tpl"; @@ -37,14 +45,28 @@ public class EntityGenerator implements IGenerator { @Override public void generate(Table table, GlobalConfig globalConfig) { - String entityPackagePath = globalConfig.getEntityPackage().replace(".", "/"); - File entityJavaFile = new File(globalConfig.getSourceDir(), entityPackagePath + "/" + + if (!globalConfig.isEntityGenerateEnable()) { + return; + } + + PackageConfig packageConfig = globalConfig.getPackageConfig(); + StrategyConfig strategyConfig = globalConfig.getStrategyConfig(); + + String entityPackagePath = packageConfig.getEntityPackage().replace(".", "/"); + File entityJavaFile = new File(packageConfig.getSourceDir(), entityPackagePath + "/" + table.buildEntityClassName() + ".java"); - Map params = new HashMap<>(); - params.put("table", table); - params.put("globalConfig", globalConfig); - globalConfig.getTemplateEngine().generate(params, templatePath, entityJavaFile); + if (entityJavaFile.exists() && !strategyConfig.isOverwriteEnable()) { + return; + } + + + Map params = new HashMap<>(3); + params.put("table", table); + params.put("packageConfig", packageConfig); + params.put("entityConfig", globalConfig.getEntityConfig()); + + strategyConfig.getTemplateEngine().generate(params, templatePath, entityJavaFile); } } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/MapperGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/MapperGenerator.java index 1f9a37fa..b2ac2fac 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/MapperGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/MapperGenerator.java @@ -16,6 +16,8 @@ package com.mybatisflex.codegen.generator.impl; import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.PackageConfig; +import com.mybatisflex.codegen.config.StrategyConfig; import com.mybatisflex.codegen.entity.Table; import com.mybatisflex.codegen.generator.IGenerator; @@ -23,6 +25,12 @@ import java.io.File; import java.util.HashMap; import java.util.Map; +/** + * Mapper 生成器。 + * + * @author Michael Yang + * @author 王帅 + */ public class MapperGenerator implements IGenerator { private String templatePath = "/templates/enjoy/mapper.tpl"; @@ -40,21 +48,25 @@ public class MapperGenerator implements IGenerator { if (!globalConfig.isMapperGenerateEnable()) { return; } + + PackageConfig packageConfig = globalConfig.getPackageConfig(); + StrategyConfig strategyConfig = globalConfig.getStrategyConfig(); - String mapperPackagePath = globalConfig.getMapperPackage().replace(".", "/"); - File mapperJavaFile = new File(globalConfig.getSourceDir(), mapperPackagePath + "/" + + String mapperPackagePath = packageConfig.getMapperPackage().replace(".", "/"); + File mapperJavaFile = new File(packageConfig.getSourceDir(), mapperPackagePath + "/" + table.buildMapperClassName() + ".java"); - if (mapperJavaFile.exists() && !globalConfig.isMapperOverwriteEnable()) { - return;//ignore + if (mapperJavaFile.exists() && !strategyConfig.isOverwriteEnable()) { + return; } - Map params = new HashMap<>(); + Map params = new HashMap<>(3); params.put("table", table); - params.put("globalConfig", globalConfig); + params.put("packageConfig", packageConfig); + params.put("mapperConfig", globalConfig.getMapperConfig()); - globalConfig.getTemplateEngine().generate(params, templatePath, mapperJavaFile); + strategyConfig.getTemplateEngine().generate(params, templatePath, mapperJavaFile); } } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceGenerator.java index d9f75338..7176001c 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceGenerator.java @@ -16,6 +16,8 @@ package com.mybatisflex.codegen.generator.impl; import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.PackageConfig; +import com.mybatisflex.codegen.config.StrategyConfig; import com.mybatisflex.codegen.entity.Table; import com.mybatisflex.codegen.generator.IGenerator; @@ -29,7 +31,6 @@ import java.util.Map; * @author 王帅 * @since 2023-05-14 */ -@SuppressWarnings("unused") public class ServiceGenerator implements IGenerator { private String templatePath = "/templates/enjoy/service.tpl"; @@ -47,21 +48,25 @@ public class ServiceGenerator implements IGenerator { if (!globalConfig.isServiceGenerateEnable()) { return; } + + PackageConfig packageConfig = globalConfig.getPackageConfig(); + StrategyConfig strategyConfig = globalConfig.getStrategyConfig(); - String servicePackagePath = globalConfig.getServicePackage().replace(".", "/"); - File serviceJavaFile = new File(globalConfig.getSourceDir(), servicePackagePath + "/" + + String servicePackagePath = packageConfig.getServicePackage().replace(".", "/"); + File serviceJavaFile = new File(packageConfig.getSourceDir(), servicePackagePath + "/" + table.buildServiceClassName() + ".java"); - if (serviceJavaFile.exists() && !globalConfig.isServiceOverwriteEnable()) { + if (serviceJavaFile.exists() && !strategyConfig.isOverwriteEnable()) { return; } - Map params = new HashMap<>(2); + Map params = new HashMap<>(3); params.put("table", table); - params.put("globalConfig", globalConfig); + params.put("packageConfig", packageConfig); + params.put("serviceConfig", globalConfig.getServiceConfig()); - globalConfig.getTemplateEngine().generate(params, templatePath, serviceJavaFile); + strategyConfig.getTemplateEngine().generate(params, templatePath, serviceJavaFile); } } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceImplGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceImplGenerator.java index 099364fa..15530716 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceImplGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ServiceImplGenerator.java @@ -16,6 +16,8 @@ package com.mybatisflex.codegen.generator.impl; import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.PackageConfig; +import com.mybatisflex.codegen.config.StrategyConfig; import com.mybatisflex.codegen.entity.Table; import com.mybatisflex.codegen.generator.IGenerator; @@ -29,7 +31,6 @@ import java.util.Map; * @author 王帅 * @since 2023-05-14 */ -@SuppressWarnings("unused") public class ServiceImplGenerator implements IGenerator { private String templatePath = "/templates/enjoy/serviceImpl.tpl"; @@ -47,21 +48,25 @@ public class ServiceImplGenerator implements IGenerator { if (!globalConfig.isServiceImplGenerateEnable()) { return; } + + PackageConfig packageConfig = globalConfig.getPackageConfig(); + StrategyConfig strategyConfig = globalConfig.getStrategyConfig(); - String serviceImplPackagePath = globalConfig.getServiceImplPackage().replace(".", "/"); - File serviceImplJavaFile = new File(globalConfig.getSourceDir(), serviceImplPackagePath + "/" + + String serviceImplPackagePath = packageConfig.getServiceImplPackage().replace(".", "/"); + File serviceImplJavaFile = new File(packageConfig.getSourceDir(), serviceImplPackagePath + "/" + table.buildServiceImplClassName() + ".java"); - if (serviceImplJavaFile.exists() && !globalConfig.isServiceImplOverwriteEnable()) { + if (serviceImplJavaFile.exists() && !strategyConfig.isOverwriteEnable()) { return; } - Map params = new HashMap<>(2); + Map params = new HashMap<>(3); params.put("table", table); - params.put("globalConfig", globalConfig); + params.put("packageConfig", packageConfig); + params.put("serviceImplConfig", globalConfig.getServiceImplConfig()); - globalConfig.getTemplateEngine().generate(params, templatePath, serviceImplJavaFile); + strategyConfig.getTemplateEngine().generate(params, templatePath, serviceImplJavaFile); } } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/TableDefGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/TableDefGenerator.java index 4e08bf3f..d4a146b2 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/TableDefGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/TableDefGenerator.java @@ -16,6 +16,8 @@ package com.mybatisflex.codegen.generator.impl; import com.mybatisflex.codegen.config.GlobalConfig; +import com.mybatisflex.codegen.config.PackageConfig; +import com.mybatisflex.codegen.config.StrategyConfig; import com.mybatisflex.codegen.entity.Table; import com.mybatisflex.codegen.generator.IGenerator; @@ -23,6 +25,12 @@ import java.io.File; import java.util.HashMap; import java.util.Map; +/** + * TableDef 生成器。 + * + * @author Michael Yang + * @author 王帅 + */ public class TableDefGenerator implements IGenerator { private String templatePath = "/templates/enjoy/tableDef.tpl"; @@ -41,15 +49,24 @@ public class TableDefGenerator implements IGenerator { return; } - String tableDefPackagePath = globalConfig.getTableDefPackage().replace(".", "/"); - File tableDefJavaFile = new File(globalConfig.getSourceDir(), tableDefPackagePath + "/" + + PackageConfig packageConfig = globalConfig.getPackageConfig(); + StrategyConfig strategyConfig = globalConfig.getStrategyConfig(); + + String tableDefPackagePath = packageConfig.getTableDefPackage().replace(".", "/"); + File tableDefJavaFile = new File(packageConfig.getSourceDir(), tableDefPackagePath + "/" + table.buildTableDefClassName() + ".java"); - Map params = new HashMap<>(); - params.put("table", table); - params.put("globalConfig", globalConfig); + if (tableDefJavaFile.exists() && !strategyConfig.isOverwriteEnable()) { + return; + } - globalConfig.getTemplateEngine().generate(params, templatePath, tableDefJavaFile); + + Map params = new HashMap<>(3); + params.put("table", table); + params.put("packageConfig", packageConfig); + params.put("tableDefConfig", globalConfig.getTableDefConfig()); + + strategyConfig.getTemplateEngine().generate(params, templatePath, tableDefJavaFile); } } diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl index b23c57e9..6c730159 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl @@ -1,23 +1,23 @@ -package #(globalConfig.controllerPackage); +package #(packageConfig.controllerPackage); import org.springframework.web.bind.annotation.RequestMapping; -#if(globalConfig.restStyleController) +#if(controllerConfig.restStyle) import org.springframework.web.bind.annotation.RestController; #else import org.springframework.stereotype.Controller; #end -#if(globalConfig.controllerSupperClass) -import #(table.buildControllerImport()) +#if(controllerConfig.supperClass) +import #(controllerConfig.buildSuperClassImport()) #end -#if(globalConfig.restStyleController) +#if(controllerConfig.restStyle) @RestController #else @Controller #end @RequestMapping("/#(table.getEntityJavaFileName())") -#if(globalConfig.controllerSupperClass) -public class #(table.table.buildControllerClassName()) extends #(table.buildControllerName()) { +#if(controllerConfig.supperClass) +public class #(table.buildControllerClassName()) extends #(controllerConfig.buildSuperClassName()) { } #else diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl index ef2cd733..a5e3a035 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl @@ -1,4 +1,4 @@ -package #(globalConfig.entityPackage); +package #(packageConfig.entityPackage); #for(importClass:table.buildImports()) import #(importClass); @@ -13,7 +13,7 @@ public class #(table.buildEntityClassName())#(table.buildExtends())#(table.build #(column.buildAnnotations())private #(column.propertySimpleType) #(column.property); #end - #if(!globalConfig.isEntityWithLombok()) + #if(!entityConfig.isWithLombok()) #for(column: table.columns) public #(column.propertySimpleType) #(column.getterMethod())() { return #(column.property); diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl index 25c8e151..227a59d6 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl @@ -1,8 +1,8 @@ -package #(globalConfig.mapperPackage); +package #(packageConfig.mapperPackage); -import #(table.buildMapperImport()); -import #(globalConfig.entityPackage).#(table.buildEntityClassName()); +import #(mapperConfig.buildSuperClassImport()); +import #(packageConfig.entityPackage).#(table.buildEntityClassName()); -public interface #(table.buildMapperClassName()) extends #(table.buildMapperName())<#(table.buildEntityClassName())> { +public interface #(table.buildMapperClassName()) extends #(mapperConfig.buildSuperClassName())<#(table.buildEntityClassName())> { } diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/service.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/service.tpl index 7bd3ac19..7b08c377 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/service.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/service.tpl @@ -1,8 +1,8 @@ -package #(globalConfig.servicePackage); +package #(packageConfig.servicePackage); -import #(table.buildServiceImport()); -import #(globalConfig.entityPackage).#(table.buildEntityClassName()); +import #(serviceConfig.buildSuperClassImport()); +import #(packageConfig.entityPackage).#(table.buildEntityClassName()); -public interface #(table.buildServiceClassName()) extends #(table.buildServiceName())<#(table.buildEntityClassName())> { +public interface #(table.buildServiceClassName()) extends #(serviceConfig.buildSuperClassName())<#(table.buildEntityClassName())> { } \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/serviceImpl.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/serviceImpl.tpl index 95722a2e..7de44a69 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/serviceImpl.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/serviceImpl.tpl @@ -1,12 +1,12 @@ -package #(globalConfig.serviceImplPackage); +package #(packageConfig.serviceImplPackage); -import #(table.buildServiceImplImport()); -import #(globalConfig.entityPackage).#(table.buildEntityClassName()); -import #(globalConfig.mapperPackage).#(table.buildMapperClassName()); -import #(globalConfig.servicePackage).#(table.buildServiceClassName()); +import #(serviceImplConfig.buildSuperClassImport()); +import #(packageConfig.entityPackage).#(table.buildEntityClassName()); +import #(packageConfig.mapperPackage).#(table.buildMapperClassName()); +import #(packageConfig.servicePackage).#(table.buildServiceClassName()); import org.springframework.stereotype.Service; @Service -public class #(table.buildServiceImplClassName()) extends #(table.buildServiceImplName())<#(table.buildMapperClassName()), #(table.buildEntityClassName())> implements #(table.buildServiceClassName()) { +public class #(table.buildServiceImplClassName()) extends #(serviceImplConfig.buildSuperClassName())<#(table.buildMapperClassName()), #(table.buildEntityClassName())> implements #(table.buildServiceClassName()) { } \ No newline at end of file diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/tableDef.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/tableDef.tpl index 25e9c5da..8c40f9cf 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/tableDef.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/tableDef.tpl @@ -1,4 +1,4 @@ -package #(globalConfig.entityPackage).tables; +package #(packageConfig.tableDefPackage); import com.mybatisflex.core.query.QueryColumn; import com.mybatisflex.core.table.TableDef;