springboot中处理mybatis返回Map时key值的大小写
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,为了统一不同数据库返回key值大小写不一致的问题,特自定义ObjectWrapperFactory来做统一的处理1,首先自定义MapWrapper/** * 将Map的key全部转换为小写 * */p
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
伟宏互联网科技
今日互联网科技
科技互联网政务服务
科技与互联网发展
北京互联网科技公司
金融科技 互联网金融
互联网科技金融公司
平安科技 互联网
时间互联网络科技
太原新华互联网科技学校怎么样
移动互联网科技公司
阿大互联网科技有限公司
深圳育鹏互联网科技有限公司招聘
互联网科技人工智能实验室
互联网新科技动漫ppt素材
无锡工业互联网科技有限公司
沐思想互联网科技有限公司
城市宝互联网科技有限公司
三亚科技创新互联网基地
山东蛋芒互联网科技有限公司
互联网与科技
南京欣网互联网络科技有限公司
科技互联网项目
中国 科技 互联网
互联网女皇 腾讯科技
互联网科技热点资讯
厦门比较好的科技互联网公司
中国科技创新与世界互联网大会
云鲸互联网络科技有限公司
安徽九吞吴互联网科技有限公司