nieqiurong 3 месяцев назад
Родитель
Сommit
72b880c947

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

@@ -453,6 +453,12 @@ public class Entity implements ITemplate {
             classAnnotationAttributes.stream().sorted(Comparator.comparingInt(s -> s.getDisplayName().length())).collect(Collectors.toList()));
         data.put("importEntityPackages", importPackageFunction != null ? importPackageFunction.apply(importPackages) :
             importPackages.stream().sorted().collect(Collectors.toList()));
+        Set<String> javaPackages = importPackages.stream().filter(pkg -> pkg.startsWith("java")).collect(Collectors.toSet());
+        data.put("importEntityJavaPackages", importPackageFunction != null ? importPackageFunction.apply(javaPackages) :
+            javaPackages.stream().sorted().collect(Collectors.toList()));
+        Set<String> frameworkPackages = importPackages.stream().filter(pkg -> !pkg.startsWith("java")).collect(Collectors.toSet());
+        data.put("importEntityFrameworkPackages", importPackageFunction != null ? importPackageFunction.apply(frameworkPackages) :
+            frameworkPackages.stream().sorted().collect(Collectors.toList()));
         data.put("entityToString", this.toString);
         return data;
     }

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

@@ -15,8 +15,11 @@
  */
 package com.baomidou.mybatisplus.generator.config.builder;
 
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.ITemplate;
 import com.baomidou.mybatisplus.generator.config.ConstVal;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 import com.baomidou.mybatisplus.generator.config.po.TableInfo;
 import com.baomidou.mybatisplus.generator.function.ConverterFileName;
@@ -33,9 +36,12 @@ import org.slf4j.LoggerFactory;
 import java.lang.annotation.Annotation;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 控制器属性配置
@@ -172,6 +178,14 @@ public class Mapper implements ITemplate {
      */
     private IGenerateMapperMethodHandler generateMapperMethodHandler;
 
+    /**
+     * 导包处理方法
+     *
+     * @since 3.5.11
+     */
+    private Function<Set<String>, List<String>> importPackageFunction;
+
+
     @Override
     @NotNull
     public Map<String, Object> renderData(@NotNull TableInfo tableInfo) {
@@ -192,12 +206,25 @@ public class Mapper implements ITemplate {
         data.put("generateMapperXml", this.generateMapperXml);
         data.put("generateMapper", this.generateMapper);
         List<MapperMethod> methodList = null;
-        Set<String> importPackages = null;
+        Set<String> importPackages = new HashSet<>();
         if (generateMapperMethodHandler != null) {
             methodList = generateMapperMethodHandler.getMethodList(tableInfo);
-            importPackages = generateMapperMethodHandler.getImportPackages(tableInfo);
+            importPackages.addAll(generateMapperMethodHandler.getImportPackages(tableInfo));
+        }
+        if(StringUtils.isNotBlank(superClass)){
+            importPackages.add(superClass);
         }
-        data.put("importPackages", importPackages == null ? Collections.emptySet() : importPackages);
+        if (mapperAnnotationClass != null) {
+            importPackages.add(mapperAnnotationClass.getName());
+        }
+        PackageConfig packageConfig = tableInfo.getPackageConfig();
+        String entityPackage = packageConfig.getPackageInfo(null, ConstVal.ENTITY) + StringPool.DOT + tableInfo.getEntityName();
+        importPackages.add(entityPackage);
+        Set<String> javaPackages = importPackages.stream().filter(pkg -> pkg.startsWith("java")).collect(Collectors.toSet());
+        Set<String> frameworkPackages = importPackages.stream().filter(pkg -> !pkg.startsWith("java")).collect(Collectors.toSet());
+        data.put("importPackages", importPackageFunction != null ? importPackageFunction.apply(importPackages) : importPackages.stream().sorted().collect(Collectors.toList()));
+        data.put("importMapperFrameworkPackages", importPackageFunction != null ? importPackageFunction.apply(frameworkPackages) : frameworkPackages.stream().sorted().collect(Collectors.toList()));
+        data.put("importMapperJavaPackages", importPackageFunction != null ? importPackageFunction.apply(javaPackages) : javaPackages.stream().sorted().collect(Collectors.toList()));
         data.put("mapperMethodList", methodList == null ? Collections.emptyList() : methodList);
         return data;
     }
@@ -428,6 +455,20 @@ public class Mapper implements ITemplate {
             return this;
         }
 
+
+        /**
+         * 导包处理方法
+         *
+         * @param importPackageFunction 导包处理
+         * @return this
+         * @since 3.5.11
+         */
+        public Builder importPackageFunction(Function<Set<String>, List<String>> importPackageFunction) {
+            this.mapper.importPackageFunction = importPackageFunction;
+            return this;
+        }
+
+
         @NotNull
         public Mapper get() {
             return this.mapper;

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

@@ -18,6 +18,7 @@ package com.baomidou.mybatisplus.generator.config.po;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
 import com.baomidou.mybatisplus.generator.config.builder.Entity;
@@ -162,6 +163,12 @@ public class TableInfo {
     @Setter
     private String schemaName;
 
+    /**
+     * @since 3.5.11
+     */
+    @Getter
+    private PackageConfig packageConfig;
+
     /**
      * 构造方法
      *
@@ -173,6 +180,7 @@ public class TableInfo {
         this.strategyConfig = configBuilder.getStrategyConfig();
         this.globalConfig = configBuilder.getGlobalConfig();
         this.entity = configBuilder.getStrategyConfig().entity();
+        this.packageConfig = configBuilder.getPackageConfig();
         this.name = name;
     }
 

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.java.btl

@@ -1,6 +1,10 @@
 package ${package.Entity};
 
-<% for(pkg in importEntityPackages){ %>
+<% for(pkg in importEntityFrameworkPackages){ %>
+import ${pkg};
+<% } %>
+
+<% for(pkg in importEntityJavaPackages){ %>
 import ${pkg};
 <% } %>
 

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.java.ej

@@ -1,6 +1,10 @@
 package #(package.Entity);
 
-#for(pkg : importEntityPackages)
+#for(pkg : importEntityFrameworkPackages)
+import #(pkg);
+#end
+
+#for(pkg : importEntityJavaPackages)
 import #(pkg);
 #end
 

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.java.ftl

@@ -1,6 +1,10 @@
 package ${package.Entity};
 
-<#list importEntityPackages as pkg>
+<#list importEntityFrameworkPackages as pkg>
+import ${pkg};
+</#list>
+
+<#list importEntityJavaPackages as pkg>
 import ${pkg};
 </#list>
 /**

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.java.vm

@@ -1,6 +1,10 @@
 package ${package.Entity};
 
-#foreach($pkg in ${importEntityPackages})
+#foreach($pkg in ${importEntityFrameworkPackages})
+import ${pkg};
+#end
+
+#foreach($pkg in ${importEntityJavaPackages})
 import ${pkg};
 #end
 

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.kt.btl

@@ -1,6 +1,10 @@
 package ${package.Entity}
 
-<% for(pkg in importEntityPackages){ %>
+<% for(pkg in importEntityFrameworkPackages){ %>
+import ${pkg};
+<% } %>
+
+<% for(pkg in importEntityJavaPackages){ %>
 import ${pkg};
 <% } %>
 

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.kt.ej

@@ -1,6 +1,10 @@
 package #(package.Entity);
 
-#for(pkg : importEntityPackages)
+#for(pkg : importEntityFrameworkPackages)
+import #(pkg);
+#end
+
+#for(pkg : importEntityJavaPackages)
 import #(pkg);
 #end
 

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.kt.ftl

@@ -1,6 +1,10 @@
 package ${package.Entity}
 
-<#list importEntityPackages as pkg>
+<#list importEntityFrameworkPackages as pkg>
+import ${pkg}
+</#list>
+
+<#list importEntityJavaPackages as pkg>
 import ${pkg}
 </#list>
 

+ 5 - 1
mybatis-plus-generator/src/main/resources/templates/entity.kt.vm

@@ -1,6 +1,10 @@
 package ${package.Entity};
 
-#foreach($pkg in ${importEntityPackages})
+#foreach($pkg in ${importEntityFrameworkPackages})
+import ${pkg};
+#end
+
+#foreach($pkg in ${importEntityJavaPackages})
 import ${pkg};
 #end
 

+ 6 - 5
mybatis-plus-generator/src/main/resources/templates/mapper.java.btl

@@ -1,12 +1,13 @@
 package ${package.Mapper};
 
-import ${package.Entity}.${entity};
-import ${superMapperClassPackage};
-<% for(pkg in importPackages){ %>
+<% for(pkg in importMapperFrameworkPackages){ %>
+import ${pkg};
+<% } %>
+<% if(isNotEmpty(importMapperJavaPackages)){ %>
+
+<% for(pkg in importMapperJavaPackages){ %>
 import ${pkg};
 <% } %>
-<% if(mapperAnnotationClass!=null){ %>
-import ${mapperAnnotationClass.name};
 <% } %>
 
 /**

+ 5 - 5
mybatis-plus-generator/src/main/resources/templates/mapper.java.ej

@@ -1,13 +1,13 @@
 package #(package.Mapper);
 
-import #(package.Entity).#(entity);
-import #(superMapperClassPackage);
+#for(pkg : importMapperFrameworkPackages)
+import #(pkg);
+#end
+#if(!importMapperJavaPackages.isEmpty())
 
-#for(pkg : importPackages)
+#for(pkg : importMapperJavaPackages)
 import #(pkg);
 #end
-#if(mapperAnnotationClass)
-import #(mapperAnnotationClass.name);
 #end
 
 /**

+ 6 - 6
mybatis-plus-generator/src/main/resources/templates/mapper.java.ftl

@@ -1,13 +1,13 @@
 package ${package.Mapper};
 
-import ${package.Entity}.${entity};
-import ${superMapperClassPackage};
-
-<#list importPackages as pkg>
+<#list importMapperFrameworkPackages as pkg>
 import ${pkg};
 </#list>
-<#if mapperAnnotationClass??>
-import ${mapperAnnotationClass.name};
+<#if importMapperJavaPackages?size !=0>
+
+  <#list importMapperJavaPackages as pkg>
+import ${pkg};
+   </#list>
 </#if>
 
 /**

+ 5 - 6
mybatis-plus-generator/src/main/resources/templates/mapper.java.vm

@@ -1,14 +1,13 @@
 package ${package.Mapper};
 
-import ${package.Entity}.${entity};
-import ${superMapperClassPackage};
-
-#foreach($pkg in ${importPackages})
+#foreach($pkg in ${importMapperFrameworkPackages})
 import ${pkg};
 #end
+#if($importMapperJavaPackages.size()>0)
 
-#if(${mapperAnnotationClass})
-import ${mapperAnnotationClass.name};
+#foreach($pkg in ${importMapperJavaPackages})
+import ${pkg};
+#end
 #end
 
 /**