Explorar el Código

增加是否生成service接口的开关:在某些项目实践中,只需要生成service实现类,不需要抽象sevice接口
针对某些项目,生成service接口,开发时反而麻烦,这种情况,可以将该属性设置为false

sundongkai hace 2 años
padre
commit
5c280eb8f5

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

@@ -85,6 +85,13 @@ public class GlobalConfig {
      */
     private Supplier<String> commentDate = () -> new SimpleDateFormat("yyyy-MM-dd").format(new Date());
 
+    /**
+     * 是否生成service 接口(默认 true)
+     * 增加此开关的原因:在某些项目实践中,只需要生成service实现类,不需要抽象sevice接口
+     * 针对某些项目,生成service接口,开发时反而麻烦,这种情况,可以将该属性设置为false
+     */
+    private boolean serviceInterface = true;
+
     public String getOutputDir() {
         return outputDir;
     }
@@ -128,6 +135,14 @@ public class GlobalConfig {
         return commentDate.get();
     }
 
+    public boolean isServiceInterface() {
+        return serviceInterface;
+    }
+
+    public void setServiceInterface(boolean serviceInterface) {
+        this.serviceInterface = serviceInterface;
+    }
+
     /**
      * 全局配置构建
      *
@@ -200,6 +215,15 @@ public class GlobalConfig {
             return this;
         }
 
+        /**
+         * 不生成service接口
+         * @return
+         */
+        public Builder disableServiceInterface() {
+            this.globalConfig.serviceInterface = false;
+            return this;
+        }
+
         /**
          * 时间类型对应策略
          */

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

@@ -354,4 +354,12 @@ public class TableInfo {
     public List<TableField> getCommonFields() {
         return commonFields;
     }
+
+    /**
+     * 获取是否生成service接口
+     * @return
+     */
+    public boolean isServiceInterface() {
+        return globalConfig.isServiceInterface();
+    }
 }

+ 9 - 5
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java

@@ -136,11 +136,15 @@ public abstract class AbstractTemplateEngine {
         // IMpService.java
         String entityName = tableInfo.getEntityName();
         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(new File(serviceFile), objectMap, service, getConfigBuilder().getStrategyConfig().service().isFileOverride());
-            });
+        // 判断是否要生成service接口
+        boolean serviceInterface = tableInfo.isServiceInterface();
+        if(serviceInterface) {
+            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(new File(serviceFile), objectMap, service, getConfigBuilder().getStrategyConfig().service().isFileOverride());
+                });
+            }
         }
         // MpServiceImpl.java
         String serviceImplPath = getPathInfo(OutputFile.serviceImpl);

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

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

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

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

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

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

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

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

+ 1 - 0
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/config/GlobalConfigTest.java

@@ -20,6 +20,7 @@ public class GlobalConfigTest {
         Assertions.assertEquals(globalConfig.getAuthor(), "mp");
         Assertions.assertEquals(globalConfig.getOutputDir(), "/temp/code");
         Assertions.assertEquals(globalConfig.getDateType(), DateType.SQL_PACK);
+        Assertions.assertTrue(globalConfig.isServiceInterface());
     }
 
     @Test