|
@@ -6,6 +6,7 @@ import java.util.Arrays;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import javax.sql.DataSource;
|
|
|
+
|
|
|
import org.apache.ibatis.io.VFS;
|
|
|
import org.apache.ibatis.session.SqlSessionFactory;
|
|
|
import org.mybatis.spring.SqlSessionFactoryBean;
|
|
@@ -26,86 +27,63 @@ import com.ruoyi.common.utils.StringUtils;
|
|
|
|
|
|
/**
|
|
|
* Mybatis支持*匹配扫描包
|
|
|
- *
|
|
|
+ *
|
|
|
* @author ruoyi
|
|
|
*/
|
|
|
@Configuration
|
|
|
-public class MyBatisConfig
|
|
|
-{
|
|
|
+public class MyBatisConfig {
|
|
|
@Autowired
|
|
|
private Environment env;
|
|
|
-
|
|
|
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
|
|
|
|
|
|
- public static String setTypeAliasesPackage(String typeAliasesPackage)
|
|
|
- {
|
|
|
+ public static String setTypeAliasesPackage(String typeAliasesPackage) {
|
|
|
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
|
|
|
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
|
|
|
List<String> allResult = new ArrayList<String>();
|
|
|
- try
|
|
|
- {
|
|
|
- for (String aliasesPackage : typeAliasesPackage.split(","))
|
|
|
- {
|
|
|
+ try {
|
|
|
+ for (String aliasesPackage : typeAliasesPackage.split(",")) {
|
|
|
List<String> result = new ArrayList<String>();
|
|
|
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;
|
|
|
- for (Resource resource : resources)
|
|
|
- {
|
|
|
- if (resource.isReadable())
|
|
|
- {
|
|
|
+ for (Resource resource : resources) {
|
|
|
+ if (resource.isReadable()) {
|
|
|
metadataReader = metadataReaderFactory.getMetadataReader(resource);
|
|
|
- try
|
|
|
- {
|
|
|
+ try {
|
|
|
result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
|
|
|
- }
|
|
|
- catch (ClassNotFoundException e)
|
|
|
- {
|
|
|
+ } catch (ClassNotFoundException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (result.size() > 0)
|
|
|
- {
|
|
|
+ if (result.size() > 0) {
|
|
|
HashSet<String> hashResult = new HashSet<String>(result);
|
|
|
allResult.addAll(hashResult);
|
|
|
}
|
|
|
}
|
|
|
- if (allResult.size() > 0)
|
|
|
- {
|
|
|
+ if (allResult.size() > 0) {
|
|
|
typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ } else {
|
|
|
throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
|
|
|
}
|
|
|
- }
|
|
|
- catch (IOException e)
|
|
|
- {
|
|
|
+ } catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return typeAliasesPackage;
|
|
|
}
|
|
|
|
|
|
- public Resource[] resolveMapperLocations(String[] mapperLocations)
|
|
|
- {
|
|
|
+ public Resource[] resolveMapperLocations(String[] mapperLocations) {
|
|
|
ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
|
|
|
List<Resource> resources = new ArrayList<Resource>();
|
|
|
- if (mapperLocations != null)
|
|
|
- {
|
|
|
- for (String mapperLocation : mapperLocations)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
+ if (mapperLocations != null) {
|
|
|
+ for (String mapperLocation : mapperLocations) {
|
|
|
+ try {
|
|
|
Resource[] mappers = resourceResolver.getResources(mapperLocation);
|
|
|
resources.addAll(Arrays.asList(mappers));
|
|
|
- }
|
|
|
- catch (IOException e)
|
|
|
- {
|
|
|
+ } catch (IOException e) {
|
|
|
// ignore
|
|
|
}
|
|
|
}
|
|
@@ -114,8 +92,7 @@ public class MyBatisConfig
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
- public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
|
|
|
- {
|
|
|
+ public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
|
|
|
String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
|
|
|
String mapperLocations = env.getProperty("mybatis.mapperLocations");
|
|
|
String configLocation = env.getProperty("mybatis.configLocation");
|
|
@@ -129,4 +106,5 @@ public class MyBatisConfig
|
|
|
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
|
|
|
return sessionFactory.getObject();
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|