1、問題描述
SpringBoot使用MyBatis做數(shù)據(jù)庫查詢肴焊,當(dāng)resultType="java.util.Map"時(shí),查詢結(jié)果數(shù)據(jù)庫字段名并沒有進(jìn)行駝峰轉(zhuǎn)換功戚。檢查MyBatis配置文件娶眷,駝峰轉(zhuǎn)換時(shí)開啟的。為什么不生效呢啸臀?
2届宠、解決辦法
經(jīng)過一番百度,原來是因?yàn)镸yBatis配置僅作用于javabean的field的,對(duì)于map并不會(huì)做轉(zhuǎn)換。那么我們可以通過自定義MyBatis的MapWrapper來實(shí)現(xiàn)map類型的駝峰轉(zhuǎn)換
1豌注、增加pom依賴
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.1-jre</version>
</dependency>
2伤塌、自定義MapWrapper
public class MspMapWrapper extends MapWrapper{
public MspMapWrapper(MetaObject metaObject, Map<String, Object> map) {
super(metaObject, map);
}
@Override
public String findProperty(String name, boolean useCamelCaseMapping) {
if(useCamelCaseMapping){
? ? ? ? ? ? //引用的谷歌的 guava庫,里面有CaseFormat是轉(zhuǎn)換駝峰的,pom添加對(duì)應(yīng)依賴即可
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,name);
}
return name;
}
}
3、替換MyBatis默認(rèn)的map包裝方法
@Configuration
public class MybatisConfig {
@Bean
public ConfigurationCustomizer mybatisConfigurationCustomizer(){
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setObjectWrapperFactory(new MapWrapperFactory());
}
};
}
}
轉(zhuǎn)自:https://my.oschina.net/u/2278977/blog/1795969
補(bǔ)充;闲摺!竟稳!
改完一測試属桦,發(fā)現(xiàn)不行,又經(jīng)過一通亂試他爸,原來我的MyBatis是通過mybatis-config.xml配置文件配置的聂宾。去除上面第三部的方法,改用在配置文件中增加配置搞定
<objectWrapperFactory type="com.summer.msp.core.wrapper.MapWrapperFactory"/>