fix:修复mybatis别名类扫描无法配置多目录的情况

master
deng-cc 5 years ago committed by Limy
parent 1643d313b8
commit 1b213b425f

@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.apache.ibatis.io.VFS; import org.apache.ibatis.io.VFS;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
@ -38,11 +39,15 @@ public class MyBatisConfig
{ {
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver); MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
typeAliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(typeAliasesPackage) + "/" + DEFAULT_RESOURCE_PATTERN; List<String> allResult = new ArrayList<String>();
try try
{
for (String aliasesPackage : typeAliasesPackage.split(","))
{ {
List<String> result = new ArrayList<String>(); List<String> result = new ArrayList<String>();
Resource[] resources = resolver.getResources(typeAliasesPackage); aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
+ ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
Resource[] resources = resolver.getResources(aliasesPackage);
if (resources != null && resources.length > 0) if (resources != null && resources.length > 0)
{ {
MetadataReader metadataReader = null; MetadataReader metadataReader = null;
@ -64,10 +69,13 @@ public class MyBatisConfig
} }
if (result.size() > 0) if (result.size() > 0)
{ {
HashSet<String> h = new HashSet<String>(result); HashSet<String> hashResult = new HashSet<String>(result);
result.clear(); allResult.addAll(hashResult);
result.addAll(h); }
typeAliasesPackage = String.join(",", (String[]) result.toArray(new String[0])); }
if (allResult.size() > 0)
{
typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
} }
else else
{ {

Loading…
Cancel
Save