日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

apache camel 相关配置_MyBatis-Plus返回map自动转驼峰配置object-wrapper-factory

發(fā)布時(shí)間:2024/8/1 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache camel 相关配置_MyBatis-Plus返回map自动转驼峰配置object-wrapper-factory 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

## 問題場景:

很多時(shí)候我們工作中查詢很多字段的時(shí)候一般是返回一個(gè)VO來接收,這個(gè)時(shí)候我們只要在yml中配置了

map-underscore-to-camel-case: true

就會(huì)自動(dòng)將查詢數(shù)據(jù)庫的字段帶下劃線的屬性轉(zhuǎn)成對(duì)應(yīng)實(shí)體類VO中駝峰命名的屬性。

但是會(huì)經(jīng)常有這種場景:例如我們只查詢2個(gè)字段要返回給前端,這時(shí)候我們還需要新建一個(gè)VO,很是麻煩,我們只需要查詢返回一個(gè)Map來接收就可以了 ,但是返回到控制臺(tái)的屬性結(jié)果卻不是駝峰命名。如下圖 ,這就是為何你yml中配置了map-underscore-to-camel-case: true也不生效的原因。(對(duì)返回map不生效)

查詢返回map屬性不是駝峰命名

怎么解決這個(gè)問題呢?解決方案:

mybatis-plus其實(shí)已經(jīng)幫我們寫好了MybatisMapWrapperFactory類(開啟返回map結(jié)果集的下劃線轉(zhuǎn)駝峰)

在mybatis-plus-extension.jar下有一個(gè)類com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory和com.baomidou.mybatisplus.extension.handlers.MybatisMapWrapper

mybatis-plus自帶map下劃線轉(zhuǎn)駝峰配置類

重點(diǎn):

我們只需要在yml中配置一下object-wrapper-factory指定MybatisMapWrapperFactory就可以了

mybatis-plus: mapper-locations: classpath:mapper/*Mapper.xml configuration: call-setters-on-nulls: true map-underscore-to-camel-case: true object-wrapper-factory: com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory

然后啟動(dòng)項(xiàng)目,我去竟然報(bào)錯(cuò)了:

***************************

APPLICATION FAILED TO START

***************************

Description:

Failed to bind properties under 'mybatis-plus.configuration.object-wrapper-factory' to org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory:

Property: mybatis-plus.configuration.object-wrapper-factory

Value: com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory

Origin: class path resource [application.yml]:99:29

Reason: No converter found capable of converting from type [java.lang.String] to type [org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory]

Action:

Update your application's configuration

啟動(dòng)報(bào)錯(cuò)詳情

提示找不到合適的converter將string轉(zhuǎn)化為ObjectWrapperFactory對(duì)象。這又是什么鬼呢?

看字面意思,應(yīng)該是缺少對(duì)應(yīng)的converter,難道m(xù)ybatis沒有提供這個(gè)converter嗎?簡直有點(diǎn)坑。而且springboot也不提供用反射機(jī)制來構(gòu)件對(duì)象的converter?是的,springboot沒有這樣做。通過查資料得知springboot提供了一種擴(kuò)展機(jī)制,允許你來寫一個(gè)converter來完成你想要的轉(zhuǎn)換工作。于是,我又寫了一個(gè)converter:

package com.bytedance.douyin.config;import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;import org.springframework.core.convert.converter.Converter;import org.springframework.stereotype.Component;@Component@ConfigurationPropertiesBindingpublic class ObjectWrapperFactoryConverter implements Converter { @Override public ObjectWrapperFactory convert(String source) { try { return (ObjectWrapperFactory) Class.forName(source).newInstance(); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { throw new RuntimeException(e); } }}

再次啟動(dòng) ok不報(bào)錯(cuò)了,這時(shí)候來看看結(jié)果是不是返回map自動(dòng)轉(zhuǎn)成駝峰命名。果然自動(dòng)轉(zhuǎn)了

返回map自動(dòng)轉(zhuǎn)駝峰命名

第二種方式:如果嫌配置Converter麻煩,不自定義Converter,那就不能在yml中配置object-wrapper-factory: com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory

教你第二種方式:直接這樣配置就搞定了

@Beanpublic ConfigurationCustomizer mybatisConfigurationCustomizer(){ return new ConfigurationCustomizer() { @Override public void customize(org.apache.ibatis.session.Configuration configuration) { configuration.setObjectWrapperFactory(new MybatisMapWrapperFactory()); } };}

總結(jié)

以上是生活随笔為你收集整理的apache camel 相关配置_MyBatis-Plus返回map自动转驼峰配置object-wrapper-factory的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。