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

dep_wangsr
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,36 +39,43 @@ 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
{ {
List<String> result = new ArrayList<String>(); for (String aliasesPackage : typeAliasesPackage.split(","))
Resource[] resources = resolver.getResources(typeAliasesPackage);
if (resources != null && resources.length > 0)
{ {
MetadataReader metadataReader = null; List<String> result = new ArrayList<String>();
for (Resource resource : resources) 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 (resource.isReadable()) MetadataReader metadataReader = null;
for (Resource resource : resources)
{ {
metadataReader = metadataReaderFactory.getMetadataReader(resource); if (resource.isReadable())
try
{
result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
}
catch (ClassNotFoundException e)
{ {
e.printStackTrace(); metadataReader = metadataReaderFactory.getMetadataReader(resource);
try
{
result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
} }
} }
} }
if (result.size() > 0)
{
HashSet<String> hashResult = new HashSet<String>(result);
allResult.addAll(hashResult);
}
} }
if (result.size() > 0) if (allResult.size() > 0)
{ {
HashSet<String> h = new HashSet<String>(result); typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
result.clear();
result.addAll(h);
typeAliasesPackage = String.join(",", (String[]) result.toArray(new String[0]));
} }
else else
{ {

Loading…
Cancel
Save