Skip to content

Commit

Permalink
导包区分处理.
Browse files Browse the repository at this point in the history
  • Loading branch information
nieqiurong committed Feb 24, 2025
1 parent b494e71 commit 72b880c
Show file tree
Hide file tree
Showing 15 changed files with 120 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,12 @@ public Map<String, Object> renderData(@NotNull TableInfo tableInfo) {
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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -33,9 +36,12 @@
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;

/**
* 控制器属性配置
Expand Down Expand Up @@ -172,6 +178,14 @@ public Class<? extends Cache> getCache() {
*/
private IGenerateMapperMethodHandler generateMapperMethodHandler;

/**
* 导包处理方法
*
* @since 3.5.11
*/
private Function<Set<String>, List<String>> importPackageFunction;


@Override
@NotNull
public Map<String, Object> renderData(@NotNull TableInfo tableInfo) {
Expand All @@ -192,12 +206,25 @@ public Map<String, Object> renderData(@NotNull TableInfo tableInfo) {
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;
}
Expand Down Expand Up @@ -428,6 +455,20 @@ public Builder generateMapperMethodHandler(IGenerateMapperMethodHandler generate
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
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;
Expand Down Expand Up @@ -162,6 +163,12 @@ public class TableInfo {
@Setter
private String schemaName;

/**
* @since 3.5.11
*/
@Getter
private PackageConfig packageConfig;

/**
* 构造方法
*
Expand All @@ -173,6 +180,7 @@ public TableInfo(@NotNull ConfigBuilder configBuilder, @NotNull String name) {
this.strategyConfig = configBuilder.getStrategyConfig();
this.globalConfig = configBuilder.getGlobalConfig();
this.entity = configBuilder.getStrategyConfig().entity();
this.packageConfig = configBuilder.getPackageConfig();
this.name = name;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package ${package.Entity};

<% for(pkg in importEntityPackages){ %>
<% for(pkg in importEntityFrameworkPackages){ %>
import ${pkg};
<% } %>

<% for(pkg in importEntityJavaPackages){ %>
import ${pkg};
<% } %>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package #(package.Entity);

#for(pkg : importEntityPackages)
#for(pkg : importEntityFrameworkPackages)
import #(pkg);
#end

#for(pkg : importEntityJavaPackages)
import #(pkg);
#end

Expand Down
Original file line number Diff line number Diff line change
@@ -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>
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package ${package.Entity}

<% for(pkg in importEntityPackages){ %>
<% for(pkg in importEntityFrameworkPackages){ %>
import ${pkg};
<% } %>

<% for(pkg in importEntityJavaPackages){ %>
import ${pkg};
<% } %>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package #(package.Entity);

#for(pkg : importEntityPackages)
#for(pkg : importEntityFrameworkPackages)
import #(pkg);
#end

#for(pkg : importEntityJavaPackages)
import #(pkg);
#end

Expand Down
Original file line number Diff line number Diff line change
@@ -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>

Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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};
<% } %>

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -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

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -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>

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -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

/**
Expand Down

0 comments on commit 72b880c

Please sign in to comment.