当前使用版本(必填,否则不予处理)
3.5.3.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
查询返回MAP时,项目引用的基础框架未开启原生SQL查询返回map时的下划线转驼峰开关,但是我们的项目开启了下划线转驼峰开关,这样导致基础框架查询返回MAP也进行了字段转换,导致页面字段对应不上,想根据配置来动态判断是否进行转换,初步想法是:能否根据ResultMap中的id来判断哪个查询来进行转换,但是在MybatisMapWrapper中获取不到ResultMap的值。
配置
/* 下划线转驼峰*/
mybatisConfiguration.setMapUnderscoreToCamelCase(true);
/* map 下划线转驼峰 */
mybatisConfiguration.setObjectWrapperFactory(new MybatisMapWrapperFactory());
//map 映射value为null的情况
mybatisConfiguration.setCallSettersOnNulls(true);
转换类
public class MybatisMapWrapper extends MapWrapper {
public MybatisMapWrapper(MetaObject metaObject, Map<String, Object> map) {
super(metaObject, map);
}
@Override
public String findProperty(String name, boolean useCamelCaseMapping) {
//想在这个方法根据一些条件来判断哪些查询进行转换是否可行,或者有更好的方法?
if (useCamelCaseMapping && !StringUtils.isCamel(name)) {
return StringUtils.underlineToCamel(name);
}
return name;
}
}
重现步骤(如果有就写完整)
报错信息
Comment From: nieqiurong
没得,如果两个工程的包名不同,可以直接配置多sqlsessionfactorybean扫描不同步的包处理