Browse Source

重构生成器模板配置.

https://github.com/baomidou/mybatis-plus/issues/6015
nieqiurong 1 year ago
parent
commit
642941c00e
15 changed files with 296 additions and 44 deletions
  1. 2 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java
  2. 3 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/GlobalConfig.java
  3. 21 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/TemplateConfig.java
  4. 2 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java
  5. 38 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Controller.java
  6. 6 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/CustomFile.java
  7. 49 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Entity.java
  8. 56 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Mapper.java
  9. 75 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Service.java
  10. 3 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java
  11. 29 31
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java
  12. 3 3
      mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.btl
  13. 3 3
      mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.ej
  14. 3 3
      mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.ftl
  15. 3 3
      mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.vm

+ 2 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

@@ -123,8 +123,10 @@ public class AutoGenerator {
      *
      * @param templateConfig 模板配置
      * @return this
+     * @see #strategy
      * @since 3.5.0
      */
+    @Deprecated
     public AutoGenerator template(@NotNull TemplateConfig templateConfig) {
         this.template = templateConfig;
         return this;

+ 3 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/GlobalConfig.java

@@ -15,6 +15,7 @@
  */
 package com.baomidou.mybatisplus.generator.config;
 
+import com.baomidou.mybatisplus.generator.config.builder.Service;
 import com.baomidou.mybatisplus.generator.config.rules.DateType;
 import lombok.Getter;
 import lombok.Setter;
@@ -90,9 +91,11 @@ public class GlobalConfig {
      * 是否生成service 接口(默认 true)
      * 增加此开关的原因:在某些项目实践中,只需要生成service实现类,不需要抽象sevice接口
      * 针对某些项目,生成service接口,开发时反而麻烦,这种情况,可以将该属性设置为false
+     * @deprecated 3.5.6 {@link Service.Builder#disableService()}
      */
     @Getter
     @Setter
+    @Deprecated
     private boolean serviceInterface = true;
 
     public boolean isSwagger() {

+ 21 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/TemplateConfig.java

@@ -16,6 +16,10 @@
 package com.baomidou.mybatisplus.generator.config;
 
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.config.builder.Controller;
+import com.baomidou.mybatisplus.generator.config.builder.Entity;
+import com.baomidou.mybatisplus.generator.config.builder.Service;
+import com.baomidou.mybatisplus.generator.config.builder.Mapper;
 import lombok.Getter;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
@@ -27,6 +31,7 @@ import org.slf4j.LoggerFactory;
  * @author tzg hubin
  * @since 2017-06-17
  */
+@Deprecated
 public class TemplateConfig {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(TemplateConfig.class);
@@ -171,6 +176,7 @@ public class TemplateConfig {
      *
      * @author nieqiurong 3.5.0
      */
+    @Deprecated
     public static class Builder implements IConfigBuilder<TemplateConfig> {
 
         private final TemplateConfig templateConfig;
@@ -207,7 +213,9 @@ public class TemplateConfig {
          *
          * @param entityTemplate 实体模板
          * @return this
+         * @deprecated {@link Entity.Builder#javaTemplate}
          */
+        @Deprecated
         public Builder entity(@NotNull String entityTemplate) {
             this.templateConfig.disableEntity = false;
             this.templateConfig.entity = entityTemplate;
@@ -219,7 +227,9 @@ public class TemplateConfig {
          *
          * @param entityKtTemplate 实体模板
          * @return this
+         * @deprecated {@link Entity.Builder#javaTemplate}
          */
+        @Deprecated
         public Builder entityKt(@NotNull String entityKtTemplate) {
             this.templateConfig.disableEntity = false;
             this.templateConfig.entityKt = entityKtTemplate;
@@ -229,9 +239,11 @@ public class TemplateConfig {
         /**
          * 设置service模板路径
          *
-         * @param serviceTemplate     service接口模板路径
+         * @param serviceTemplate service接口模板路径
          * @return this
+         * @deprecated {@link Service.Builder#serviceTemplate(String)}
          */
+        @Deprecated
         public Builder service(@NotNull String serviceTemplate) {
             this.templateConfig.service = serviceTemplate;
             return this;
@@ -242,7 +254,9 @@ public class TemplateConfig {
          *
          * @param serviceImplTemplate service实现类模板路径
          * @return this
+         * @deprecated {@link Service.Builder#serviceImplTemplate(String)}
          */
+        @Deprecated
         public Builder serviceImpl(@NotNull String serviceImplTemplate) {
             this.templateConfig.serviceImpl = serviceImplTemplate;
             return this;
@@ -253,7 +267,9 @@ public class TemplateConfig {
          *
          * @param mapperTemplate mapper模板路径
          * @return this
+         * @deprecated {@link Mapper.Builder#mapperTemplate(String)}
          */
+        @Deprecated
         public Builder mapper(@NotNull String mapperTemplate) {
             this.templateConfig.mapper = mapperTemplate;
             return this;
@@ -264,7 +280,9 @@ public class TemplateConfig {
          *
          * @param xmlTemplate xml模板路径
          * @return this
+         * @deprecated {@link Mapper.Builder#mapperXmlTemplate(String)}
          */
+        @Deprecated
         public Builder xml(@NotNull String xmlTemplate) {
             this.templateConfig.xml = xmlTemplate;
             return this;
@@ -275,7 +293,9 @@ public class TemplateConfig {
          *
          * @param controllerTemplate 控制器模板路径
          * @return this
+         * @deprecated {@link Controller.Builder#template(String)}
          */
+        @Deprecated
         public Builder controller(@NotNull String controllerTemplate) {
             this.templateConfig.controller = controllerTemplate;
             return this;

+ 2 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

@@ -36,6 +36,7 @@ public class ConfigBuilder {
     /**
      * 模板路径配置信息
      */
+    @Deprecated
     private final TemplateConfig templateConfig;
 
     /**
@@ -142,6 +143,7 @@ public class ConfigBuilder {
     }
 
     @NotNull
+    @Deprecated
     public TemplateConfig getTemplateConfig() {
         return templateConfig;
     }

+ 38 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Controller.java

@@ -82,6 +82,21 @@ public class Controller implements ITemplate {
     @Getter
     private boolean fileOverride;
 
+    /**
+     * 是否生成
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private boolean generate = true;
+
+    /**
+     * 模板路径
+     * @since 3.5.6
+     */
+    @Getter
+    private String templatePath = ConstVal.TEMPLATE_CONTROLLER;
+
     @Nullable
     public String getSuperClass() {
         return superClass;
@@ -200,6 +215,29 @@ public class Controller implements ITemplate {
             return this;
         }
 
+        /**
+         * 禁用生成
+         *
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder disable() {
+            this.controller.generate = false;
+            return this;
+        }
+
+        /**
+         * 指定模板路径
+         *
+         * @param template 模板路径
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder template(String template) {
+            this.controller.templatePath = template;
+            return this;
+        }
+
         @NotNull
         public Controller get() {
             return this.controller;

+ 6 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/CustomFile.java

@@ -60,6 +60,12 @@ public class CustomFile {
      */
     private boolean fileOverride;
 
+    /**
+     * 是否生成
+     */
+    @Getter
+    private boolean generate;
+
     /**
      * 构建者
      */

+ 49 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Entity.java

@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.IFill;
 import com.baomidou.mybatisplus.generator.ITemplate;
+import com.baomidou.mybatisplus.generator.config.ConstVal;
 import com.baomidou.mybatisplus.generator.config.INameConvert;
 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 import com.baomidou.mybatisplus.generator.config.po.TableInfo;
@@ -58,6 +59,20 @@ public class Entity implements ITemplate {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(Entity.class);
 
+    /**
+     * Java模板默认路径
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private String javaTemplate = ConstVal.TEMPLATE_ENTITY_JAVA;
+
+    /**
+     * Kotlin模板默认撸
+     */
+    @Getter
+    private String kotlinTemplate = ConstVal.TEMPLATE_ENTITY_KT;
+
     private Entity() {
     }
 
@@ -199,6 +214,15 @@ public class Entity implements ITemplate {
     @Getter
     private boolean fileOverride;
 
+
+    /**
+     * 是否生成
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private boolean generate;
+
     /**
      * <p>
      * 父类 Class 反射属性转换为公共字段
@@ -617,6 +641,31 @@ public class Entity implements ITemplate {
             return this;
         }
 
+        /**
+         * 指定模板路径
+         *
+         * @param template 模板路径
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder javaTemplate(String template) {
+            this.entity.javaTemplate = template;
+            return this;
+        }
+
+        /**
+         * 指定模板路径
+         *
+         * @param template 模板路径
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder kotlinTemplatePath(String template) {
+            this.entity.kotlinTemplate = template;
+            return this;
+        }
+
+
         public Entity get() {
             String superClass = this.entity.superClass;
             if (StringUtils.isNotBlank(superClass)) {

+ 56 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Mapper.java

@@ -114,6 +114,38 @@ public class Mapper implements ITemplate {
      */
     private Class<? extends Cache> cache;
 
+    /**
+     * 是否生成XML
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private boolean generateMapperXml = true;
+
+    /**
+     * 是否生成Mapper
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private boolean generateMapper = true;
+
+    /**
+     * Mapper模板路径
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private String mapperTemplatePath = ConstVal.TEMPLATE_MAPPER;
+
+    /**
+     * MapperXml模板路径
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private String mapperXmlTemplatePath = ConstVal.TEMPLATE_XML;
+
     @NotNull
     public String getSuperClass() {
         return superClass;
@@ -145,6 +177,8 @@ public class Mapper implements ITemplate {
             data.put("cacheClassName", cacheClass.getName());
         }
         data.put("superMapperClass", ClassUtils.getSimpleName(this.superClass));
+        data.put("generateMapperXml", this.generateMapperXml);
+        data.put("generateMapper", this.generateMapper);
         return data;
     }
 
@@ -306,6 +340,28 @@ public class Mapper implements ITemplate {
             return this;
         }
 
+        /**
+         * Service模板路径
+         *
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder mapperTemplate(String template) {
+            this.mapper.mapperTemplatePath = template;
+            return this;
+        }
+
+        /**
+         * ServiceImpl模板路径
+         *
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder mapperXmlTemplate(String template) {
+            this.mapper.mapperXmlTemplatePath = template;
+            return this;
+        }
+
         @NotNull
         public Mapper get() {
             return this.mapper;

+ 75 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Service.java

@@ -42,6 +42,35 @@ public class Service implements ITemplate {
     private Service() {
     }
 
+    /**
+     * 是否生成serviceImpl
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private boolean generateServiceImpl = false;
+
+
+    /**
+     * 是否生成service
+     *
+     * @since 3.5.6
+     */
+    @Getter
+    private boolean generateService = false;
+
+    /**
+     * @since 3.5.6
+     */
+    @Getter
+    private String serviceTemplate = ConstVal.TEMPLATE_SERVICE;
+
+    /**
+     * @since 3.5.6
+     */
+    @Getter
+    private String serviceImplTemplate = ConstVal.TEMPLATE_SERVICE_IMPL;
+
     /**
      * 自定义继承的Service类全称,带包名
      */
@@ -102,6 +131,8 @@ public class Service implements ITemplate {
         data.put("superServiceClass", ClassUtils.getSimpleName(this.superServiceClass));
         data.put("superServiceImplClassPackage", this.superServiceImplClass);
         data.put("superServiceImplClass", ClassUtils.getSimpleName(this.superServiceImplClass));
+        data.put("generateServiceImpl", this.generateServiceImpl);
+        data.put("generateService", this.generateService);
         return data;
     }
 
@@ -221,6 +252,50 @@ public class Service implements ITemplate {
             return this;
         }
 
+        /**
+         * 禁用生成
+         *
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder disableService() {
+            this.service.generateService = false;
+            return this;
+        }
+
+        /**
+         * 禁用生成ServiceImpl
+         *
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder disableServiceImpl() {
+            this.service.generateServiceImpl = false;
+            return this;
+        }
+
+        /**
+         * Service模板路径
+         *
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder serviceTemplate(String template) {
+            this.service.serviceTemplate = template;
+            return this;
+        }
+
+        /**
+         * ServiceImpl模板路径
+         *
+         * @return this
+         * @since 3.5.6
+         */
+        public Builder serviceImplTemplate(String template) {
+            this.service.serviceImplTemplate = template;
+            return this;
+        }
+
         @NotNull
         public Service get() {
             return this.service;

+ 3 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.generator.config.GlobalConfig;
 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
 import com.baomidou.mybatisplus.generator.config.builder.Entity;
+import com.baomidou.mybatisplus.generator.config.builder.Service;
 import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
 import lombok.Getter;
 import org.jetbrains.annotations.NotNull;
@@ -328,7 +329,9 @@ public class TableInfo {
 
     /**
      * 获取是否生成service接口
+     * @deprecated {@link Service.Builder#disableService()}
      */
+    @Deprecated
     public boolean isServiceInterface() {
         return globalConfig.isServiceInterface();
     }

+ 29 - 31
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java

@@ -19,7 +19,11 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.config.*;
 import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
+import com.baomidou.mybatisplus.generator.config.builder.Controller;
 import com.baomidou.mybatisplus.generator.config.builder.CustomFile;
+import com.baomidou.mybatisplus.generator.config.builder.Entity;
+import com.baomidou.mybatisplus.generator.config.builder.Mapper;
+import com.baomidou.mybatisplus.generator.config.builder.Service;
 import com.baomidou.mybatisplus.generator.config.po.TableInfo;
 import com.baomidou.mybatisplus.generator.util.FileUtils;
 import com.baomidou.mybatisplus.generator.util.RuntimeUtils;
@@ -90,11 +94,11 @@ public abstract class AbstractTemplateEngine {
     protected void outputEntity(@NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
         String entityName = tableInfo.getEntityName();
         String entityPath = getPathInfo(OutputFile.entity);
-        if (StringUtils.isNotBlank(entityName) && StringUtils.isNotBlank(entityPath)) {
-            getTemplateFilePath(template -> template.getEntity(getConfigBuilder().getGlobalConfig().isKotlin())).ifPresent((entity) -> {
-                String entityFile = String.format((entityPath + File.separator + "%s" + suffixJavaOrKt()), entityName);
-                outputFile(getOutputFile(entityFile, OutputFile.entity), objectMap, entity, getConfigBuilder().getStrategyConfig().entity().isFileOverride());
-            });
+        Entity entity = this.getConfigBuilder().getStrategyConfig().entity();
+        GlobalConfig globalConfig = configBuilder.getGlobalConfig();
+        if (entity.isGenerate()) {
+            String entityFile = String.format((entityPath + File.separator + "%s" + suffixJavaOrKt()), entityName);
+            outputFile(getOutputFile(entityFile, OutputFile.entity), objectMap, templateFilePath(globalConfig.isKotlin() ? entity.getKotlinTemplate() : entity.getJavaTemplate()), getConfigBuilder().getStrategyConfig().entity().isFileOverride());
         }
     }
 
@@ -113,19 +117,16 @@ public abstract class AbstractTemplateEngine {
         // MpMapper.java
         String entityName = tableInfo.getEntityName();
         String mapperPath = getPathInfo(OutputFile.mapper);
-        if (StringUtils.isNotBlank(tableInfo.getMapperName()) && StringUtils.isNotBlank(mapperPath)) {
-            getTemplateFilePath(TemplateConfig::getMapper).ifPresent(mapper -> {
-                String mapperFile = String.format((mapperPath + File.separator + tableInfo.getMapperName() + suffixJavaOrKt()), entityName);
-                outputFile(getOutputFile(mapperFile, OutputFile.mapper), objectMap, mapper, getConfigBuilder().getStrategyConfig().mapper().isFileOverride());
-            });
+        Mapper mapper = this.getConfigBuilder().getStrategyConfig().mapper();
+        if (mapper.isGenerateMapper() || (StringUtils.isNotBlank(tableInfo.getMapperName()) && StringUtils.isNotBlank(mapperPath))) {
+            String mapperFile = String.format((mapperPath + File.separator + tableInfo.getMapperName() + suffixJavaOrKt()), entityName);
+            outputFile(getOutputFile(mapperFile, OutputFile.mapper), objectMap, templateFilePath(mapper.getMapperTemplatePath()), getConfigBuilder().getStrategyConfig().mapper().isFileOverride());
         }
         // MpMapper.xml
         String xmlPath = getPathInfo(OutputFile.xml);
-        if (StringUtils.isNotBlank(tableInfo.getXmlName()) && StringUtils.isNotBlank(xmlPath)) {
-            getTemplateFilePath(TemplateConfig::getXml).ifPresent(xml -> {
-                String xmlFile = String.format((xmlPath + File.separator + tableInfo.getXmlName() + ConstVal.XML_SUFFIX), entityName);
-                outputFile(getOutputFile(xmlFile, OutputFile.xml), objectMap, xml, getConfigBuilder().getStrategyConfig().mapper().isFileOverride());
-            });
+        if (mapper.isGenerateMapperXml() || (StringUtils.isNotBlank(tableInfo.getXmlName()) && StringUtils.isNotBlank(xmlPath))) {
+            String xmlFile = String.format((xmlPath + File.separator + tableInfo.getXmlName() + ConstVal.XML_SUFFIX), entityName);
+            outputFile(getOutputFile(xmlFile, OutputFile.xml), objectMap, templateFilePath(mapper.getMapperXmlTemplatePath()), getConfigBuilder().getStrategyConfig().mapper().isFileOverride());
         }
     }
 
@@ -140,22 +141,19 @@ public abstract class AbstractTemplateEngine {
         // IMpService.java
         String entityName = tableInfo.getEntityName();
         // 判断是否要生成service接口
-        if (tableInfo.isServiceInterface()) {
+        Service service = this.getConfigBuilder().getStrategyConfig().service();
+        if (service.isGenerateService()) {
             String servicePath = getPathInfo(OutputFile.service);
             if (StringUtils.isNotBlank(tableInfo.getServiceName()) && StringUtils.isNotBlank(servicePath)) {
-                getTemplateFilePath(TemplateConfig::getService).ifPresent(service -> {
-                    String serviceFile = String.format((servicePath + File.separator + tableInfo.getServiceName() + suffixJavaOrKt()), entityName);
-                    outputFile(getOutputFile(serviceFile, OutputFile.service), objectMap, service, getConfigBuilder().getStrategyConfig().service().isFileOverride());
-                });
+                String serviceFile = String.format((servicePath + File.separator + tableInfo.getServiceName() + suffixJavaOrKt()), entityName);
+                outputFile(getOutputFile(serviceFile, OutputFile.service), objectMap, templateFilePath(service.getServiceTemplate()), getConfigBuilder().getStrategyConfig().service().isFileOverride());
             }
         }
         // MpServiceImpl.java
         String serviceImplPath = getPathInfo(OutputFile.serviceImpl);
-        if (StringUtils.isNotBlank(tableInfo.getServiceImplName()) && StringUtils.isNotBlank(serviceImplPath)) {
-            getTemplateFilePath(TemplateConfig::getServiceImpl).ifPresent(serviceImpl -> {
-                String implFile = String.format((serviceImplPath + File.separator + tableInfo.getServiceImplName() + suffixJavaOrKt()), entityName);
-                outputFile(getOutputFile(implFile, OutputFile.serviceImpl), objectMap, serviceImpl, getConfigBuilder().getStrategyConfig().service().isFileOverride());
-            });
+        if (service.isGenerateServiceImpl() || (StringUtils.isNotBlank(tableInfo.getServiceImplName()) && StringUtils.isNotBlank(serviceImplPath))) {
+            String implFile = String.format((serviceImplPath + File.separator + tableInfo.getServiceImplName() + suffixJavaOrKt()), entityName);
+            outputFile(getOutputFile(implFile, OutputFile.serviceImpl), objectMap, templateFilePath(service.getServiceImplTemplate()), getConfigBuilder().getStrategyConfig().service().isFileOverride());
         }
     }
 
@@ -168,13 +166,12 @@ public abstract class AbstractTemplateEngine {
      */
     protected void outputController(@NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
         // MpController.java
+        Controller controller = this.getConfigBuilder().getStrategyConfig().controller();
         String controllerPath = getPathInfo(OutputFile.controller);
-        if (StringUtils.isNotBlank(tableInfo.getControllerName()) && StringUtils.isNotBlank(controllerPath)) {
-            getTemplateFilePath(TemplateConfig::getController).ifPresent(controller -> {
-                String entityName = tableInfo.getEntityName();
-                String controllerFile = String.format((controllerPath + File.separator + tableInfo.getControllerName() + suffixJavaOrKt()), entityName);
-                outputFile(getOutputFile(controllerFile, OutputFile.controller), objectMap, controller, getConfigBuilder().getStrategyConfig().controller().isFileOverride());
-            });
+        if (controller.isGenerate() || (StringUtils.isNotBlank(tableInfo.getControllerName()) && StringUtils.isNotBlank(controllerPath))) {
+            String entityName = tableInfo.getEntityName();
+            String controllerFile = String.format((controllerPath + File.separator + tableInfo.getControllerName() + suffixJavaOrKt()), entityName);
+            outputFile(getOutputFile(controllerFile, OutputFile.controller), objectMap, templateFilePath(controller.getTemplatePath()), getConfigBuilder().getStrategyConfig().controller().isFileOverride());
         }
     }
 
@@ -211,6 +208,7 @@ public abstract class AbstractTemplateEngine {
      * @since 3.5.0
      */
     @NotNull
+    @Deprecated
     protected Optional<String> getTemplateFilePath(@NotNull Function<TemplateConfig, String> function) {
         TemplateConfig templateConfig = getConfigBuilder().getTemplateConfig();
         String filePath = function.apply(templateConfig);

+ 3 - 3
mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.btl

@@ -2,7 +2,7 @@ package ${package.ServiceImpl};
 
 import ${package.Entity}.${entity};
 import ${package.Mapper}.${table.mapperName};
-<% if(table.serviceInterface){ %>
+<% if(generateService){ %>
 import ${package.Service}.${table.serviceName};
 <% } %>
 import ${superServiceImplClassPackage};
@@ -18,11 +18,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 <% if(kotlin){ %>
-open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()<% if(table.serviceInterface){ %>, ${table.serviceName}<% } %> {
+open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()<% if(generateService){ %>, ${table.serviceName}<% } %> {
 
 }
 <% }else{ %>
-public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}><% if(table.serviceInterface){ %> implements ${table.serviceName}<% } %> {
+public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}><% if(generateService){ %> implements ${table.serviceName}<% } %> {
 
 }
 <% } %>

+ 3 - 3
mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.ej

@@ -2,7 +2,7 @@ package #(package.ServiceImpl);
 
 import #(package.Entity).#(entity);
 import #(package.Mapper).#(table.mapperName);
-#if(table.isServiceInterface())
+#if(generateService)
 import #(package.Service).#(table.serviceName);
 #end
 import #(superServiceImplClassPackage);
@@ -18,11 +18,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 #if(kotlin)
-open class #(table.serviceImplName) : #(superServiceImplClass)<#(table.mapperName), #(entity)>()#if(table.isServiceInterface()), #(table.serviceName)#end {
+open class #(table.serviceImplName) : #(superServiceImplClass)<#(table.mapperName), #(entity)>() #if(generateService), #(table.serviceName)#end {
 
 }
 #else
-public class #(table.serviceImplName) extends #(superServiceImplClass)<#(table.mapperName), #(entity)>#if(table.isServiceInterface()) implements #(table.serviceName)#end {
+public class #(table.serviceImplName) extends #(superServiceImplClass)<#(table.mapperName), #(entity)> #if(generateService) implements #(table.serviceName)#end {
 
 }
 #end

+ 3 - 3
mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.ftl

@@ -2,7 +2,7 @@ package ${package.ServiceImpl};
 
 import ${package.Entity}.${entity};
 import ${package.Mapper}.${table.mapperName};
-<#if table.serviceInterface>
+<#if generateService>
 import ${package.Service}.${table.serviceName};
 </#if>
 import ${superServiceImplClassPackage};
@@ -18,11 +18,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 <#if kotlin>
-open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()<#if table.serviceInterface>, ${table.serviceName}</#if> {
+open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()<#if generateService>, ${table.serviceName}</#if> {
 
 }
 <#else>
-public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}><#if table.serviceInterface> implements ${table.serviceName}</#if> {
+public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}><#if generateService> implements ${table.serviceName}</#if> {
 
 }
 </#if>

+ 3 - 3
mybatis-plus-generator/src/main/resources/templates/serviceImpl.java.vm

@@ -2,7 +2,7 @@ package ${package.ServiceImpl};
 
 import ${package.Entity}.${entity};
 import ${package.Mapper}.${table.mapperName};
-#if(${table.serviceInterface})
+#if(${generateService})
 import ${package.Service}.${table.serviceName};
 #end
 import ${superServiceImplClassPackage};
@@ -18,11 +18,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 #if(${kotlin})
-open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()#if(${table.serviceInterface}), ${table.serviceName}#end {
+open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()#if(${generateService}), ${table.serviceName}#end {
 
 }
 #else
-public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}>#if(${table.serviceInterface}) implements ${table.serviceName}#end {
+public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}>#if(${generateService}) implements ${table.serviceName}#end {
 
 }
 #end