springboot中处理mybatis返回Map时key值的大小写
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,为了统一不同数据库返回key值大小写不一致的问题,特自定义ObjectWrapperFactory来做统一的处理1,首先自定义MapWrapper/** * 将Map的key全部转换为小写 * */p
千家信息网最后更新 2025年12月02日springboot中处理mybatis返回Map时key值的大小写
为了统一不同数据库返回key值大小写不一致的问题,特自定义ObjectWrapperFactory来做统一的处理
1,首先自定义MapWrapper
/** * 将Map的key全部转换为小写 * */public class MapKeyLowerWrapper extends MapWrapper { public MapKeyLowerWrapper(MetaObject metaObject, Map map) { super(metaObject, map); } @Override public String findProperty(String name, boolean useCamelCaseMapping) { return name==null?"":name.toLowerCase() ; }} 2,自定义ObjectWrapperFactory
mybatis默认的ObjectWrapperFactory
public class DefaultObjectWrapperFactory implements ObjectWrapperFactory { public boolean hasWrapperFor(Object object) { return false; } public ObjectWrapper getWrapperFor(MetaObject metaObject, Object object) { throw new ReflectionException( "The DefaultObjectWrapperFactory should never be called to provide an ObjectWrapper."); }}我们自定义的如下:
public class MapWrapperFactory implements ObjectWrapperFactory { @Override public boolean hasWrapperFor(Object object) { return object != null && object instanceof Map; } @Override public ObjectWrapper getWrapperFor(MetaObject metaObject, Object object) { return new MapKeyLowerWrapper(metaObject, (Map) object); }}3,在mybatis的配置中添加 MapWrapperFactory 的配置
@Bean(name = "sqlSessionFactory")@ConditionalOnBean(name = "dataSource")public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSource) { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setObjectWrapperFactory(new MapWrapperFactory()); bean.setDataSource(dataSource); // 添加XML目录 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); try { bean.setMapperLocations(resolver.getResources("classpath*:com/ultrapower/ioss/**/mapper/**/*.xml")); return bean.getObject(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); }}@Bean("sqlSessionTemplate")@ConditionalOnBean(name = "sqlSessionFactory")public SqlSessionTemplate sqlSessionTemplate( @Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory);}@ConditionalOnBean(name = "dataSource")@Bean(name = "transactionManager")public PlatformTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) { DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource); return dataSourceTransactionManager;}
统一
配置
大小
处理
不同
一致
小写
数据
数据库
目录
问题
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
公安局数据库
公共场合网络安全吗
软件测试关于数据库的面试题
游戏程序员和软件开发区别
富士康 软件开发
科达服务器怎么添加摄像头
网络安全日记300字
嘉兴游戏软件开发创新服务
大数据技术软件技术网络技术
优酷如何部署网络安全架构
TBC5区服务器推荐
学校资源数据库下载
excel统计有多少数据库
王者的服务器叫什么
淮安初中网络安全竞赛
软件开发模型哪个好
网络安全2022任子行
oracle关闭数据库时间较长
7800w用多大的服务器
圣安地列斯汤姆尼服务器
网络安全项目做什么
学数据库技术用什么书最好
网络技术专业考大学还能改专业吗
ppt中国网络安全研究所
软件不使用数据库
sql数据库如何查找数据库
100周年网络安全工作方案
韩商言参加的网络安全大赛
网络技术管理规范
数据库技术的收获