亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

MyBatis Map結果的Key轉為駝峰式

2024-07-14 08:43:21
字體:
來源:轉載
供稿:網友

MyBatis 配置文件中,支持下面這幾種配置:

properties, settings, typeAliases, typeHandlers, 
objectFactory, objectWrapperFactory, reflectorFactory, 
plugins, environments, databaseIdProvider, mappers

我們使用objectWrapperFactory來解決這個問題。

配置這個屬性時,必須遵守上面屬性配置的順序進行配置(在objectFactory后面,在reflectorFactory前面),否則就會出錯。

objectWrapperFactory 接口如下:

public interface ObjectWrapperFactory { boolean hasWrapperFor(Object object); ObjectWrapper getWrapperFor(MetaObject metaObject, Object object);}

通過實現這個接口,可以判斷當objectMap類型時,返回true,然后在下面的getWrapperFor中返回一個可以處理 key 為駝峰的Wrapper 類即可。

首先,參考已有的MapWrapper實現自己的MyWrapper

package tk.mybatis;import org.apache.ibatis.reflection.MetaObject;import org.apache.ibatis.reflection.wrapper.MapWrapper;import java.util.Map;/** * 駝峰處理 */public class MyMapWrapper extends MapWrapper {  public MyMapWrapper(MetaObject metaObject, Map<String, Object> map) {    super(metaObject, map);  }  @Override  public String findProperty(String name, boolean useCamelCaseMapping) {    if (useCamelCaseMapping        && ((name.charAt(0) >= 'A' && name.charAt(0) <= 'Z')           || name.indexOf("_") >= 0)) {      return underlineToCamelhump(name);    }    return name;  }  /**   * 將下劃線風格替換為駝峰風格   * @param inputString   * @return   */  public String underlineToCamelhump(String inputString) {    StringBuilder sb = new StringBuilder();    boolean nextUpperCase = false;    for (int i = 0; i < inputString.length(); i++) {      char c = inputString.charAt(i);      if (c == '_') {        if (sb.length() > 0) {          nextUpperCase = true;        }      } else {        if (nextUpperCase) {          sb.append(Character.toUpperCase(c));          nextUpperCase = false;        } else {          sb.append(Character.toLowerCase(c));        }      }    }    return sb.toString();  }}

這種方式實現起來很容易。然后提供ObjectWrapperFactory實現類:

package tk.mybatis;import org.apache.ibatis.reflection.MetaObject;import org.apache.ibatis.reflection.wrapper.ObjectWrapper;import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;import java.util.Map;/** * Map 類型結果轉駝峰 */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 MyMapWrapper(metaObject, (Map) object);  }}

仍然很簡單,在 MyBatis 配置文件中配置上objectWrapperFactory

<objectWrapperFactory type="tk.mybatis.MapWrapperFactory"/>

因為代碼中判斷了useCamelCaseMapping,所以想要真正能夠使用這個功能,還需要在settings中增加如下配置:

<settings>  <setting name="mapUnderscoreToCamelCase" value="true"/>  <!-- 其他配置 --></settings>

這種方式不需要使用攔截器,而且直接從源頭對Map 的key 進行處理,不會產生任何額外的消耗,如果你經常設置返回值resultType為map,可以嘗試該方法。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品综合久久久久久97| 97在线视频免费观看| 伊人亚洲福利一区二区三区| 亚洲а∨天堂久久精品9966| 日韩色av导航| 夜夜狂射影院欧美极品| 久久黄色av网站| 日韩视频免费观看| 精品成人乱色一区二区| 国产精品手机播放| 97精品免费视频| 亚洲色图18p| 欧美日韩亚洲一区二区三区| 国产精品久久色| 这里只有精品在线观看| 亚洲bt天天射| 亚洲精品永久免费| 成人免费看黄网站| 欧美日韩一区二区三区| 国产精品视频一区二区高潮| 中文字幕亚洲天堂| www亚洲精品| 成人在线国产精品| 亚洲女人天堂色在线7777| 2019亚洲日韩新视频| 狠狠色狠狠色综合日日五| 日韩黄在线观看| 国产精品视频免费在线| 欧美中文字幕在线播放| 97av在线视频| 欧美另类69精品久久久久9999| 国产美女91呻吟求| 国产成人avxxxxx在线看| 日本久久精品视频| 最近免费中文字幕视频2019| 日本精品免费一区二区三区| 欧美性xxxx极品hd满灌| 亚洲欧美色婷婷| 欧美激情视频一区二区| 成人福利在线视频| 91网站在线免费观看| 亚洲第一偷拍网| 亚洲国产日韩精品在线| www.日韩.com| 怡红院精品视频| 欧洲成人在线视频| 国产成人一区三区| 国产日本欧美一区二区三区在线| 欧美日韩视频免费播放| 欧美电影免费观看电视剧大全| 国产欧美日韩91| 伊人久久久久久久久久久久久| 欧美最猛黑人xxxx黑人猛叫黄| 黄色精品在线看| 成人黄色大片在线免费观看| 久久影视三级福利片| 亚洲欧美综合另类中字| 欧美激情一区二区三区在线视频观看| 国产精品久久久久免费a∨大胸| 亚洲欧美福利视频| 欧美性猛交xxxx乱大交3| 亚洲国产天堂久久综合| 成人国产精品av| 91精品国产高清自在线看超| 亚洲免费人成在线视频观看| 久久九九全国免费精品观看| 亚洲人成网站免费播放| 中文字幕久精品免费视频| 国产精品久久久久久亚洲调教| 国产精品老牛影院在线观看| 亚洲精品黄网在线观看| 热99在线视频| 亚洲第五色综合网| 欧美成人三级视频网站| 91sao在线观看国产| 日韩电影大片中文字幕| 亚洲最大激情中文字幕| 久久精品国产成人| 精品久久久久久亚洲精品| 国产精品美女www| 久久久伊人欧美| 日韩精品免费综合视频在线播放| 亚洲性猛交xxxxwww| 国产精品久久久久久搜索| 久久黄色av网站| 高跟丝袜欧美一区| 日本欧美在线视频| 欧洲日本亚洲国产区| 亚洲欧洲日产国产网站| 中文字幕少妇一区二区三区| 亚洲综合中文字幕68页| 国产精品麻豆va在线播放| 亚洲激情免费观看| 国产999在线观看| 久久久久久久国产精品视频| 中文字幕亚洲图片| 亚洲成人a**站| 日韩欧美中文第一页| 日韩欧美在线视频免费观看| 成人av.网址在线网站| 亚洲欧美国产视频| 97超级碰碰人国产在线观看| 国产99久久精品一区二区永久免费| 欧美精品videos另类日本| 精品久久久久久久久久久| 成人av资源在线播放| 亚洲精品一区二三区不卡| 91九色蝌蚪国产| 日韩欧美国产免费播放| 这里只有精品在线播放| 久久久久久久亚洲精品| 亚洲人成在线观看| 97在线日本国产| 亚洲美女自拍视频| 国产精品美女在线观看| 欧美色欧美亚洲高清在线视频| 国产女同一区二区| 中文字幕亚洲二区| 91久久国产综合久久91精品网站| 97人洗澡人人免费公开视频碰碰碰| 中文字幕免费精品一区高清| 国产午夜精品视频| 亚洲精品国产精品自产a区红杏吧| 亚洲国产日韩欧美综合久久| 性色av一区二区三区在线观看| 亚洲欧美日韩中文在线制服| 国产主播精品在线| 亚洲视频在线免费观看| 亚洲精品电影在线| 国产丝袜一区二区三区| 日韩精品在线视频观看| 91久久夜色精品国产网站| 日韩欧美国产高清91| 久久久女女女女999久久| 欧美疯狂xxxx大交乱88av| 亚洲综合社区网| 尤物99国产成人精品视频| 亚洲国语精品自产拍在线观看| 亚洲国产日韩欧美在线图片| 久久av资源网站| 亚洲精品午夜精品| 日韩免费精品视频| 久久精品国产成人| 81精品国产乱码久久久久久| 91精品综合久久久久久五月天| 国产精品久久电影观看| 国产亚洲xxx| 亚洲风情亚aⅴ在线发布| 亚洲欧洲xxxx| 最新国产精品亚洲| 亚洲一区999| 91av在线国产| 尤物yw午夜国产精品视频明星| 97久久超碰福利国产精品…| 91极品女神在线| 亚洲精品欧美日韩| 精品激情国产视频| 亚洲国产中文字幕久久网| 日韩美女免费线视频| 欧美日韩视频免费播放| 久久久久久久国产精品| 亚洲精品中文字幕有码专区| 精品一区二区三区三区| 国产午夜精品一区理论片飘花|