فهرست منبع

!58 修改typeAliasesPackage扫描
Merge pull request !58 from Quincy/3.0

青苗 7 سال پیش
والد
کامیت
9f252dd95e

+ 35 - 58
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/spring/MybatisSqlSessionFactoryBean.java

@@ -15,21 +15,16 @@
  */
 package com.baomidou.mybatisplus.extension.spring;
 
-import static org.springframework.util.Assert.notNull;
-import static org.springframework.util.Assert.state;
-import static org.springframework.util.ObjectUtils.isEmpty;
-import static org.springframework.util.StringUtils.hasLength;
-import static org.springframework.util.StringUtils.tokenizeToStringArray;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.sql.DataSource;
-
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.core.MybatisXMLConfigBuilder;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.sql.SqlHelper;
+import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
+import com.baomidou.mybatisplus.extension.toolkit.PackageHelper;
 import org.apache.ibatis.builder.xml.XMLMapperBuilder;
 import org.apache.ibatis.cache.Cache;
 import org.apache.ibatis.executor.ErrorContext;
@@ -58,18 +53,18 @@ import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.core.NestedIOException;
 import org.springframework.core.io.Resource;
 import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
-import org.springframework.util.StringUtils;
 
-import com.baomidou.mybatisplus.core.MybatisConfiguration;
-import com.baomidou.mybatisplus.core.MybatisXMLConfigBuilder;
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.core.enums.IEnum;
-import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.core.toolkit.sql.SqlHelper;
-import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
-import com.baomidou.mybatisplus.extension.toolkit.PackageHelper;
-import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.*;
+
+import static org.springframework.util.Assert.notNull;
+import static org.springframework.util.Assert.state;
+import static org.springframework.util.ObjectUtils.isEmpty;
+import static org.springframework.util.StringUtils.hasLength;
+import static org.springframework.util.StringUtils.tokenizeToStringArray;
 
 /**
  * <p>
@@ -210,30 +205,7 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
      * ISSUE https://gitee.com/baomidou/mybatis-plus/issues/IKJ48
      */
     public void setTypeAliasesPackage(String typeAliasesPackage) {
-        if (StringUtils.hasLength(typeAliasesPackage)
-            && typeAliasesPackage.contains("*")
-            && typeAliasesPackage.contains(",")) {
-            StringBuilder builder = new StringBuilder();
-            String[] array = StringUtils.tokenizeToStringArray(typeAliasesPackage, ",; \t\n");
-            for (String one : array) {
-                if (one.contains("*")) {
-                    this.appendArrayToBuilder(builder, PackageHelper.convertTypeAliasesPackage(one));
-                } else {
-                    builder.append(one).append(",");
-                }
-            }
-            this.typeAliasesPackage = builder.deleteCharAt(builder.length() - 1).toString();
-        } else {
-            this.typeAliasesPackage = typeAliasesPackage;
-        }
-    }
-
-    private void appendArrayToBuilder(StringBuilder builder, String[] array) {
-        if (builder != null && array != null && array.length > 0) {
-            for (String item : array) {
-                builder.append(item).append(",");
-            }
-        }
+        this.typeAliasesPackage = typeAliasesPackage;
     }
 
     public void setTypeEnumsPackage(String typeEnumsPackage) {
@@ -462,18 +434,23 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
 
         if (hasLength(this.typeAliasesPackage)) {
             // TODO 支持自定义通配符
-            String[] typeAliasPackageArray;
-            if (typeAliasesPackage.contains("*") && !typeAliasesPackage.contains(",")
-                && !typeAliasesPackage.contains(";")) {
-                typeAliasPackageArray = PackageHelper.convertTypeAliasesPackage(typeAliasesPackage);
+            List<String> typeAliasPackageList = new ArrayList<>();
+            if (typeAliasesPackage.contains("*") && !typeAliasesPackage.contains(",") && !typeAliasesPackage.contains(";")) {
+                typeAliasPackageList.addAll(Arrays.asList(PackageHelper.convertTypeAliasesPackage(typeAliasesPackage)));
             } else {
-                typeAliasPackageArray = tokenizeToStringArray(this.typeAliasesPackage,
-                    ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
+                String[] typeAliasPackageArray = tokenizeToStringArray(this.typeAliasesPackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
+                for (String one : typeAliasPackageArray) {
+                    if (one.contains("*")) {
+                        typeAliasPackageList.addAll(Arrays.asList(PackageHelper.convertTypeAliasesPackage(one)));
+                    } else {
+                        typeAliasPackageList.add(one);
+                    }
+                }
             }
-            if (typeAliasPackageArray == null) {
+            if (CollectionUtils.isEmpty(typeAliasPackageList)) {
                 throw new MybatisPlusException("not find typeAliasesPackage:" + typeAliasesPackage);
             }
-            for (String packageToScan : typeAliasPackageArray) {
+            for (String packageToScan : typeAliasPackageList) {
                 configuration.getTypeAliasRegistry().registerAliases(packageToScan,
                     typeAliasesSuperType == null ? Object.class : typeAliasesSuperType);
                 if (LOGGER.isDebugEnabled()) {