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

首頁 > 開發 > Java > 正文

Mybatis工具類JdbcTypeInterceptor運行時自動添加jdbcType屬性

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

JdbcTypeInterceptor

運行時自動添加 jdbcType 屬性

攔截器簽名

@Intercepts({    @Signature(      type = ParameterHandler.class,       method = "setParameters",       args = {PreparedStatement.class})})

這類攔截器很少見,所以和其他攔截器(如分頁插件)等搭配使用時不需要考慮順序。

這個插件最適合的場景可能就是 Oracle 數據庫,可以自動給所有方法添加 jdbcType 屬性,避免 null 導致的錯誤。遇到這種情況時,你可以先嘗試配置 setting:

<settings> <setting name="jdbcTypeForNull" value="NULL"/></settings>

如果這個配置仍然無法解決你的問題,就可以試試JdbcType插件。

說明,必看!

首先,這個插件默認情況下是適合通用 Mapper 使用的!因為默認情況下,這個攔截器會處理所有繼承自Mapper<T> 的方法,代碼如下:

//設置默認的方法,是用 Mapper 所有方法Method[] methods = tk.mybatis.mapper.common.Mapper.class.getMethods();for (Method method : methods) {  methodSet.add(method.getName());}

上面這是默認的方法,如果你不是用于通用Mapper,建議去掉這段代碼,或者換成你自己的默認方法。

默認會自動根據java類型自動配置的jdbcType類型如下:

//設置默認的類型轉換,參考 TypeHandlerRegistryregister(Boolean.class, JdbcType.BOOLEAN);register(boolean.class, JdbcType.BOOLEAN);register(Byte.class, JdbcType.TINYINT);register(byte.class, JdbcType.TINYINT);register(Short.class, JdbcType.SMALLINT);register(short.class, JdbcType.SMALLINT);register(Integer.class, JdbcType.INTEGER);register(int.class, JdbcType.INTEGER);register(Long.class, JdbcType.BIGINT);register(long.class, JdbcType.BIGINT);register(Float.class, JdbcType.FLOAT);register(float.class, JdbcType.FLOAT);register(Double.class, JdbcType.DOUBLE);register(double.class, JdbcType.DOUBLE);register(String.class, JdbcType.VARCHAR);register(BigDecimal.class, JdbcType.DECIMAL);register(BigInteger.class, JdbcType.DECIMAL);register(Byte[].class, JdbcType.BLOB);register(byte[].class, JdbcType.BLOB);register(Date.class, JdbcType.DATE);register(java.sql.Date.class, JdbcType.DATE);register(java.sql.Time.class, JdbcType.TIME);register(java.sql.Timestamp.class, JdbcType.TIMESTAMP);register(Character.class, JdbcType.CHAR);register(char.class, JdbcType.CHAR);

除了上面這些默認類型外,還可以通過參數進行配置。

參數代碼:

@Overridepublic void setProperties(Properties properties) {  String methodStr = properties.getProperty("methods");  if (isNotEmpty(methodStr)) {    //處理所有方法    if (methodStr.equalsIgnoreCase("ALL")) {      methodSet.clear();    } else {      String[] methods = methodStr.split(",");      for (String method : methods) {        methodSet.add(method);      }    }  }  //手動配置  String typeMapStr = properties.getProperty("typeMaps");  if (isNotEmpty(typeMapStr)) {    String[] typeMaps = typeMapStr.split(",");    for (String typeMap : typeMaps) {      String[] kvs = typeMap.split(":");      if (kvs.length == 2) {        register(kvs[0], kvs[1]);      }    }  }}

從代碼可以看到,支持下面兩個參數:

  • methods:攔截的方法,如果配置為ALL,就會攔截所有的方法,你可以配置為方法名用逗號隔開的形式。
  • typeMaps:配置 java 到 jdbcType 的類型映射,使用如:java1:jdbcType1,java2:jdbcType2這種形式進行配置,java1代表具體的類型,要用全限定名稱方式。jdbcType 的值參考 org.apache.ibatis.type.JdbcType枚舉。

配置方式

<plugins>  <plugin interceptor="tk.mybatis.plugin.JdbcTypeInterceptor">    <property name="methods" value="ALL"/>    <property name="typeMaps" value="java.lang.String:VARCHAR"/>  </plugin></plugins>

特別注意,上面配置的兩個參數只是示例,不要照抄,最簡單的就是下面這樣配置:

<plugins>  <plugin interceptor="tk.mybatis.plugin.JdbcTypeInterceptor"/></plugins>

因為這個插件就一個類,所以有什么問題自己看源碼解決,發現bug可以提!

總結

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


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品黑色丝袜高跟鞋| 国产精品亚洲аv天堂网| 日韩中文字幕在线免费观看| 亚洲一区制服诱惑| 欧美激情三级免费| 欧美一区二粉嫩精品国产一线天| 亚洲欧洲日本专区| 亚洲色图25p| 日韩在线精品视频| 欧美大全免费观看电视剧大泉洋| 精品国产91乱高清在线观看| 青青草99啪国产免费| 韩国一区二区电影| 日韩中文字幕网址| 欧美精品福利视频| 92看片淫黄大片欧美看国产片| 日韩中文字幕在线播放| 久久久久国产一区二区三区| 日韩中文字幕在线播放| 久久成人精品一区二区三区| 国产在线视频2019最新视频| 欧美极品少妇与黑人| 国产精品伦子伦免费视频| 国内精品400部情侣激情| 中文在线资源观看视频网站免费不卡| 国产在线视频不卡| 色偷偷偷综合中文字幕;dd| 人妖精品videosex性欧美| 亚洲人午夜精品免费| 91久久精品视频| 中文字幕不卡在线视频极品| 26uuu另类亚洲欧美日本一| 久久精品视频在线播放| 国产91在线播放精品91| 欧美夫妻性生活视频| 国产精品永久免费| 91精品国产自产91精品| 亚洲欧美在线x视频| 欧美成人激情图片网| 国产视频丨精品|在线观看| 国产精品第三页| 91豆花精品一区| 国产精品一区二区性色av| 亚洲第一页在线| 8090成年在线看片午夜| 亚洲性日韩精品一区二区| 国产视频精品va久久久久久| 中文日韩在线观看| 欧美日产国产成人免费图片| 最近2019中文免费高清视频观看www99| 国产一区二区久久精品| 国产视频精品xxxx| 全色精品综合影院| www.日韩欧美| 久久精品国产91精品亚洲| 国产一区av在线| 中文字幕日本欧美| 精品日韩中文字幕| 日韩av不卡在线| 欧美丝袜第一区| 成人中文字幕在线观看| 亚洲精品国产精品国自产观看浪潮| 欧美日韩日本国产| 国产精品久久久久久久久久免费| 国产精品观看在线亚洲人成网| 日韩亚洲成人av在线| 91高清免费在线观看| 91久久精品国产91久久| 中文字幕在线看视频国产欧美在线看完整| 国产精品久久中文| 国产精品久久久久久久久久免费| 欧美激情在线一区| 日韩在线播放一区| 麻豆成人在线看| 中文字幕日韩欧美精品在线观看| 国内久久久精品| 日韩欧美精品网站| 欧美激情欧美狂野欧美精品| 97精品在线观看| 亚洲人成在线一二| 欧美日韩在线免费观看| 热草久综合在线| 久久精品国产综合| 国产精品香蕉国产| 国产日韩精品电影| 亚洲日本中文字幕| 91精品国产色综合久久不卡98| 成人免费黄色网| 成人在线国产精品| 欧美日韩国产综合新一区| 欧美另类69精品久久久久9999| 国产一区二区欧美日韩| 亚洲午夜未删减在线观看| 欧美日韩成人免费| 色悠悠国产精品| 久久久久久国产精品久久| 国产精品成人一区| 亚洲香蕉成人av网站在线观看| 成人有码在线播放| 国产精品入口免费视频一| 亚洲欧美激情精品一区二区| 国产啪精品视频| 国产精品尤物福利片在线观看| 欧美www在线| 国产成人精品a视频一区www| 一区二区欧美久久| 91精品一区二区| 九九热精品视频国产| 亚洲第一天堂无码专区| 欧美国产一区二区三区| 97成人在线视频| 久久久精品影院| 久久久久久久久久久国产| 欧美激情免费视频| 日韩国产中文字幕| 2019av中文字幕| 日韩女优人人人人射在线视频| 亚洲精品一二区| 色婷婷综合久久久久| 国产精品视频不卡| 亚洲精品综合久久中文字幕| 国产在线98福利播放视频| 欧美性xxxxx极品娇小| 欧美色欧美亚洲高清在线视频| 欧美成人高清视频| 精品福利在线视频| 日韩专区中文字幕| 欧美精品18videos性欧美| 久久精品免费播放| 久久久久久久久久久网站| 91久久久在线| 国产ts一区二区| 日韩一区二区久久久| 欧美久久精品一级黑人c片| 伊人激情综合网| 国产精品午夜国产小视频| 国内精品久久久久影院优| 国产精品久久中文| 欧美日韩亚洲精品内裤| www.精品av.com| 欧美在线一级va免费观看| 亚洲va男人天堂| 国产精品一二区| 国产精品第3页| 亚洲尤物视频网| 最近2019年日本中文免费字幕| 亚洲欧美资源在线| 成人精品网站在线观看| 理论片在线不卡免费观看| 91精品国产自产在线老师啪| 国产在线视频欧美| 欧美性猛交99久久久久99按摩| 欧美在线视频导航| 精品高清一区二区三区| 精品久久久久久久久久久| 91亚洲精品视频| 久久av红桃一区二区小说| 成人国产精品久久久久久亚洲| 久久久久一本一区二区青青蜜月| 92裸体在线视频网站| 欧美日韩国产中文精品字幕自在自线| 欧美精品18videosex性欧美| 伊人亚洲福利一区二区三区| 黄色精品一区二区|