2023年7月24日发(作者:)
Mybatis不⽀持通配符扫包起别名问题typeAliasesPackage 默认只能扫描某⼀个路径下,或以逗号等分割的 ⼏个路径下的内容,不⽀持通配符和正则,采⽤重写的⽅式解决
package ;
import l;
import Utils; //注意:不⼀定⾮得是lang3包 lang包也可以
import sionFactoryBean;
import ;
import ce;
import tchingResourcePatternResolver;
import cePatternResolver;
import gMetadataReaderFactory;
import taReader;
import taReaderFactory;
import tils;
import ption;
import ist;
import ;
/**
* @ClassName: PackagesSqlSessionFactoryBean
* @Description: mybatis⾃动扫描别名路径(新增通配符匹配功能)
* @author wzf* @date 2019年1⽉21⽇
*/public class PackagesSqlSessionFactoryBean extends SqlSessionFactoryBean { // 包中的类
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
private static Logger logger = ();
@Override
public void setTypeAliasesPackage(String typeAliasesPackage) {
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
typeAliasesPackage = ATH_ALL_URL_PREFIX +
tClassNameToResourcePath(typeAliasesPackage) + "/" + DEFAULT_RESOURCE_PATTERN;
//将加载多个绝对匹配的所有Resource
//将⾸先通过ource("META-INF")加载⾮模式路径部分
//然后进⾏遍历模式匹配
try {
List
Resource[] resources = ources(typeAliasesPackage);
if(resources != null && > 0){
MetadataReader metadataReader = null;
for(Resource resource : resources){
if(able()){
metadataReader = adataReader(resource);
try {
(e(ssMetadata().getClassName()).getPackage().getName());
} catch (ClassNotFoundException e) {
tackTrace();
}
}
}
}
if(() > 0) { eAliasesPackage((y(), ","));
}else{
("参数typeAliasesPackage:"+typeAliasesPackage+",未找到任何包");
}
//("d");
} catch (IOException e) {
tackTrace();
}
}
}
然后在spring-mybatis的配置⽂件中修改改造前:配置:绿⾊为修改前关键部分
改造后:配置:黄⾊为修改前关键部分
参考⾃:/bian1729183741/article/details/52193882
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690193963a312591.html
评论列表(0条)