如何解决Mybatis实体别名支持通配符扫描问题
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下如何解决Mybatis实体别名支持通配符扫描问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Mybat
千家信息网最后更新 2026年11月03日如何解决Mybatis实体别名支持通配符扫描问题
小编给大家分享一下如何解决Mybatis实体别名支持通配符扫描问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
Mybatis简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录
问题
Spring集成Mybatis的项目中,可以为指定包下的实体取别名,这样在Mapper xml文件中可以省略实体类的全路径名称,只写类名称即可;但是在多模块项目中,可能需要将实体放在不同的模块下,此时需要配置多路径扫描;
方式一:配置多个路径,逗号分隔符隔开
classpath*:mybatis/mapper/*.xml
方式二:采用通配符的方式配置,默认不支持此方式,需要对 SqlSessionFactoryBean 进行重写,使其支持通配符扫描
package com.dongzz.cms.common.plugin.mybatis;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.core.io.Resource;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.core.io.support.ResourcePatternResolver;import org.springframework.core.type.classreading.CachingMetadataReaderFactory;import org.springframework.core.type.classreading.MetadataReader;import org.springframework.core.type.classreading.MetadataReaderFactory;import org.springframework.util.ClassUtils;import java.io.IOException;import java.util.HashSet;import java.util.Set;/** * 自定义 SqlSessionFactoryBean */public class SqlSessionFactoryBean extends org.mybatis.spring.SqlSessionFactoryBean { public static final Logger logger = LoggerFactory.getLogger(SqlSessionFactoryBean.class); public static final String DEFAULT_RESOURCE_PATTERN = "**/*.class"; // 别名通配符 /** * 重写 实体别名扩展 支持通配符 * * @param typeAliasesPackage 格式: com.dongzz.cms.modules.**.entity */ @Override public void setTypeAliasesPackage(String typeAliasesPackage) { // 资源路径解析器 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); // 元数据读取 MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver); // 解析路径 typeAliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(typeAliasesPackage) + "/" + DEFAULT_RESOURCE_PATTERN; logger.debug("别名包通配符:" + typeAliasesPackage); try { Set result = new HashSet<>(); // 别名包路径集合 Resource[] resources = resolver.getResources(typeAliasesPackage); // 根据路径 读取所有的类资源 if (resources != null && resources.length > 0) { MetadataReader metadataReader = null; for (Resource resource : resources) { if (resource.isReadable()) { metadataReader = metadataReaderFactory.getMetadataReader(resource); // 读取类的信息,每个 Resource 都是一个类资源 try { result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName()); // 存储类对应的包路径 } catch (ClassNotFoundException e) { e.printStackTrace(); } } } } if (result.size() > 0) { logger.debug("别名包路径集合:" + StringUtils.join(result.toArray(), ",")); super.setTypeAliasesPackage(StringUtils.join(result.toArray(), ",")); } else { logger.warn("Parameter typeAliasesPackage:" + typeAliasesPackage + ", not found any packages."); } } catch (IOException e) { e.printStackTrace(); } }} Xml配置:
classpath*:mybatis/mapper/*.xml
通过自定义 SqlSessionFactoryBean 使得mybatis支持通配符别名扫描,这样在多模块项目中,扫描路径仅需要配置一次即可;
以上是"如何解决Mybatis实体别名支持通配符扫描问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
路径
别名
通配符
支持
实体
配置
方式
问题
模块
篇文章
资源
项目
信息
内容
数据
存储
不同
优秀
普通
高级
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技ppt模板
赫美联合互联网科技
互联网科技小额贷款
互联网科技论坛
济南华为互联网科技产业总部基地
哈尔滨新华互联网科技学院
须眉科技是互联网公司吗
互联网科技革命什么开始
华夏互联网科技业
搜狐科技互联网
洛阳昕诺飞互联网科技有限公司
互联网科技圈年度人物
电子商务与互联网科技的关系
上海互联网科技公司ppt
互联网科技包装股份有限公司上市
工业互联网科技创业
昆明中奇联合互联网科技
全球科技与互联网公司市值变化
互联网科技创新创业项目
互联网科技创业有什么好项目
手磨咖啡
互联网科技工作委员会主任
互联网品科技
壹账通互联网科技
智慧科技互联网
以后互联网后是啥科技
互联网对科技的发展
工业互联网山东科技大学
同城互联网络科技
伍佰万互联网科技是干嘛的