SpringBoot使用MyBatis做數(shù)據(jù)庫查詢時駝峰轉(zhuǎn)換問題

1、問題描述

SpringBoot使用MyBatis做數(shù)據(jù)庫查詢,當(dāng)resultType="java.util.Map"時,查詢結(jié)果數(shù)據(jù)庫字段名并沒有進(jìn)行駝峰轉(zhuǎn)換。檢查MyBatis配置文件,駝峰轉(zhuǎn)換時開啟的。為什么不生效呢?


2、解決辦法

經(jīng)過一番百度,原來是因?yàn)镸yBatis配置僅作用于javabean的field的,對于map并不會做轉(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添加對應(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"/>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容