springboot中處理mybatis返回Map時key值的大小寫
阿新 • • 發佈:2018-06-16
不一致 ole ios cat catch case time res 自定義 為了統一不同數據庫返回key值大小寫不一致的問題,特自定義ObjectWrapperFactory來做統一的處理
1,首先自定義MapWrapper
/** * 將Map的key全部轉換為小寫 * */ public class MapKeyLowerWrapper extends MapWrapper { public MapKeyLowerWrapper(MetaObject metaObject, Map<String, Object> map) { super(metaObject, map); } @Override public String findProperty(String name, boolean useCamelCaseMapping) { return name==null?"":name.toLowerCase() ; } }
2,自定義ObjectWrapperFactory
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; }
springboot中處理mybatis返回Map時key值的大小寫