Ver Fonte

修复setSuperEntityColumns与setSuperEntityClass属性冲突

https://gitee.com/baomidou/mybatis-plus/issues/I1UD92
nieqiuqiu há 4 anos atrás
pai
commit
2a275381a8

+ 12 - 6
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/StrategyConfig.java

@@ -28,8 +28,11 @@ import lombok.experimental.Accessors;
 
 import java.lang.reflect.Field;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 策略配置项
@@ -80,7 +83,7 @@ public class StrategyConfig {
      * 自定义基础的Entity类,公共字段
      */
     @Setter(AccessLevel.NONE)
-    private String[] superEntityColumns;
+    private Set<String> superEntityColumns = new HashSet<>();
     /**
      * 自定义继承的Mapper类全称,带包名
      */
@@ -252,13 +255,13 @@ public class StrategyConfig {
     public boolean includeSuperEntityColumns(String fieldName) {
         if (null != superEntityColumns) {
             // 公共字段判断忽略大小写【 部分数据库大小写不敏感 】
-            return Arrays.stream(superEntityColumns).anyMatch(e -> e.equalsIgnoreCase(fieldName));
+            return superEntityColumns.stream().anyMatch(e -> e.equalsIgnoreCase(fieldName));
         }
         return false;
     }
 
     public StrategyConfig setSuperEntityColumns(String... superEntityColumns) {
-        this.superEntityColumns = superEntityColumns;
+        this.superEntityColumns.addAll(Arrays.asList(superEntityColumns));
         return this;
     }
 
@@ -367,12 +370,12 @@ public class StrategyConfig {
      */
     protected void convertSuperEntityColumns(Class<?> clazz) {
         List<Field> fields = TableInfoHelper.getAllFields(clazz);
-        this.superEntityColumns = fields.stream().map(field -> {
+        this.superEntityColumns.addAll(fields.stream().map(field -> {
             if (null == columnNaming || columnNaming == NamingStrategy.no_change) {
                 return field.getName();
             }
             return StringUtils.camelToUnderline(field.getName());
-        }).distinct().toArray(String[]::new);
+        }).collect(Collectors.toSet()));
     }
     
     
@@ -398,5 +401,8 @@ public class StrategyConfig {
     public StrategyConfig setEntityBuilderModel(boolean entityBuilderModel) {
         return setChainModel(entityBuilderModel);
     }
-    
+
+    public String[] getSuperEntityColumns() {
+        return superEntityColumns.toArray(new String[]{});
+    }
 }

+ 15 - 7
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/StrategyConfigTest.java

@@ -33,32 +33,40 @@ import com.baomidou.mybatisplus.test.generator.entity.SuperEntity;
  * @author hubin
  * @since 2019-02-20
  */
-public class StrategyConfigTest {
+class StrategyConfigTest {
 
     @Test
-    public void baseEntity() {
+    void baseEntity() {
         StrategyConfig strategyConfig = new StrategyConfig();
         strategyConfig.setSuperEntityClass(BaseEntity.class);
         String[] columns = strategyConfig.getSuperEntityColumns();
-        Arrays.stream(columns).forEach(column -> System.out.println(column));
+        Arrays.stream(columns).forEach(System.out::println);
         Assertions.assertEquals(columns.length, 3);
     }
 
     @Test
-    public void baseEntityNaming() {
+    void baseEntityNaming() {
         StrategyConfig strategyConfig = new StrategyConfig();
         strategyConfig.setSuperEntityClass(BaseEntity.class, NamingStrategy.underline_to_camel);
         String[] columns = strategyConfig.getSuperEntityColumns();
-        Arrays.stream(columns).forEach(column -> System.out.println(column));
+        Arrays.stream(columns).forEach(System.out::println);
         Assertions.assertEquals(columns.length, 3);
+
+        strategyConfig = new StrategyConfig();
+        strategyConfig.setSuperEntityColumns("aa","bb").setSuperEntityClass(BaseEntity.class,NamingStrategy.underline_to_camel);
+        Assertions.assertEquals(strategyConfig.getSuperEntityColumns().length, 5);
+
+        strategyConfig = new StrategyConfig();
+        strategyConfig.setSuperEntityClass(BaseEntity.class, NamingStrategy.underline_to_camel).setSuperEntityColumns("aa", "bb");
+        Assertions.assertEquals(strategyConfig.getSuperEntityColumns().length, 5);
     }
 
     @Test
-    public void superEntity() {
+    void superEntity() {
         StrategyConfig strategyConfig = new StrategyConfig();
         strategyConfig.setSuperEntityClass(SuperEntity.class);
         String[] columns = strategyConfig.getSuperEntityColumns();
-        Arrays.stream(columns).forEach(column -> System.out.println(column));
+        Arrays.stream(columns).forEach(System.out::println);
         Assertions.assertEquals(columns.length, 2);
     }
 }