修复mybaits返回值为Map类型时key丢失问题
问题复现
【备用一段】和【备用二段】在数据库查询出的数据为空,导出到excel文件后,理想状态应该是空格,实际确是【备用二段】后的值往前推了一位,导致excel错乱
问题原因
java代码实现
List<Map<String, Object>> exportDataExcel(@Param("conditionMap") Map<String, Object> conditionMap);
可以看到 返回值为List包含Map,用Map做映射时候,查到【备用一段】和【备用二段】为空,就取消了key展示
问题修复
更改mybatis的配置
@Bean(name = "dbreconSqlSessionFactory")
public SqlSessionFactory dbreconSqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dbreconDataSource());
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resourcePatternResolver.getResources("classpath*:com/micro/db/dbrecon/dao/mybatis/mapping/*.xml");
sqlSessionFactoryBean.setMapperLocations(resources);
PageHelper pageHelper = new PageHelper();
Properties pHproperties = new Properties();
pHproperties.put("dialect", "oracle");
pageHelper.setProperties(pHproperties);
sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageHelper});
logger.debug(DBRECON.MODULE_LOG_PREFIX + "dbreconSqlSessionFactory初始化成功>CommonMapper.xml加载成功>PageHelper插件加载成功");
// 设置是否显示null值
sqlSessionFactoryBean.getObject().getConfiguration().setCallSettersOnNulls(true);
return sqlSessionFactoryBean.getObject();
}