Mybatis不支持通配符扫包起别名问题

Mybatis不支持通配符扫包起别名问题

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 result = new ArrayList();

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信