在使用mybatis的时候,经常会用到resultType=“map” 返回map类型的数据。发现mysql默认返回的都是小写的, oracle返回的都是大写
如果项目换数据库了, 会导致有很大的工作量, 所以我就全局配置了转大写
配置一共分为2步
第一步: 需要重写map的包装器将Map的key全部转换为大写
package com.qymj.mybatis.objectwrapperfactory;
import java.util.Map;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.wrapper.MapWrapper;
/**
* 重写map的包装器将Map的key全部转换为小写
* */
public class MapKeyUpperWrapper extends MapWrapper {
public MapKeyUpperWrapper(MetaObject metaObject, Map<String, Object> map) {
super(metaObject, map);
}
@Override
public String findProperty(String name, boolean useCamelCaseMapping) {
return name==null?"":name.toUpperCase() ;
}
}
重写map的包装器工厂,返回已经实现的MapKeyUpperWrapper
package com.qymj.mybatis.objectwrapperfactory;
import java.util.Map;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.wrapper.ObjectWrapper;
import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
/**
* 重写map的包装器工厂,返回已经实现的MapKeyLowerWrapper
* @author xujia
*/
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 MapKeyUpperWrapper(metaObject, (Map) object);
}
}
第二步: 在mybatis的配置文件中配置
<!-- 将返回的map的key全部变为大写 -->
<objectWrapperFactory type="com.qymj.mybatis.objectwrapperfactory.MapWrapperFactory"/>
在mybatis的配置文件中配置,需要注意一点 配置这个是需要有顺序的
需要在plugins之上