springboot中处理mybatis返回Map时key值的大小写
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,为了统一不同数据库返回key值大小写不一致的问题,特自定义ObjectWrapperFactory来做统一的处理1,首先自定义MapWrapper/** * 将Map的key全部转换为小写 * */p
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
安徽手机软件开发创新服务
委外软件开发费要合同备案
服务器有多少核
河北前端软件开发费用
天津仓储生鲜软件开发
福建省计算机网络技术技能培训
网络安全探针与电脑入侵
网络安全系统设计安全管理
云南省网络安全总队长
工业互联网卓翼科技
云服务器为什么用linux系统
地形图数据库文件
数据库运营维护
网络安全训练营服务器配置
网络安全研究生有必要考吗
崇明区微型网络技术厂家现货
浪潮联想服务器谁售后好
中盟传媒软件开发
惠普服务器电源模式
lte自组织网络技术分析
网络安全教育活动讨论
服务器管理员帐号管理
机械工程数据库实验报告
ps软件开发时间
圆满完成网络安全和信息化审计
阴阳师游戏封号是服务器还是账号
局域网的数据库
云服务器为什么用linux系统
软件开发平台的核心是什么
乡镇网络安全应急工作