国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Mybatis工具類JdbcTypeInterceptor運(yùn)行時(shí)自動(dòng)添加jdbcType屬性

Mybatis工具類JdbcTypeInterceptor運(yùn)行時(shí)自動(dòng)添加jdbcType屬性

2021-06-25 13:46isea533 Java教程

今天小編就為大家分享一篇關(guān)于Mybatis工具類JdbcTypeInterceptor運(yùn)行時(shí)自動(dòng)添加jdbcType屬性,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

jdbctypeinterceptor

運(yùn)行時(shí)自動(dòng)添加 jdbctype 屬性

攔截器簽名

?
1
2
3
4
5
6
@intercepts({
    @signature(
      type = parameterhandler.class,
      method = "setparameters",
      args = {preparedstatement.class})
})

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

這個(gè)插件最適合的場(chǎng)景可能就是 oracle 數(shù)據(jù)庫(kù),可以自動(dòng)給所有方法添加 jdbctype 屬性,避免 null 導(dǎo)致的錯(cuò)誤。遇到這種情況時(shí),你可以先嘗試配置 setting:

?
1
2
3
<settings>
 <setting name="jdbctypefornull" value="null"/>
</settings>

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

說明,必看!

首先,這個(gè)插件默認(rèn)情況下是適合通用 mapper 使用的!因?yàn)槟J(rèn)情況下,這個(gè)攔截器會(huì)處理所有繼承自mapper<t> 的方法,代碼如下:

?
1
2
3
4
5
//設(shè)置默認(rèn)的方法,是用 mapper 所有方法
method[] methods = tk.mybatis.mapper.common.mapper.class.getmethods();
for (method method : methods) {
  methodset.add(method.getname());
}

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

默認(rèn)會(huì)自動(dòng)根據(jù)java類型自動(dòng)配置的jdbctype類型如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//設(shè)置默認(rèn)的類型轉(zhuǎn)換,參考 typehandlerregistry
register(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);

除了上面這些默認(rèn)類型外,還可以通過參數(shù)進(jìn)行配置。

參數(shù)代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@override
public 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);
      }
    }
  }
  //手動(dòng)配置
  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]);
      }
    }
  }
}

從代碼可以看到,支持下面兩個(gè)參數(shù):

  • methods:攔截的方法,如果配置為all,就會(huì)攔截所有的方法,你可以配置為方法名用逗號(hào)隔開的形式。
  • typemaps:配置 java 到 jdbctype 的類型映射,使用如:java1:jdbctype1,java2:jdbctype2這種形式進(jìn)行配置,java1代表具體的類型,要用全限定名稱方式。jdbctype 的值參考 org.apache.ibatis.type.jdbctype枚舉。

配置方式

?
1
2
3
4
5
6
<plugins>
  <plugin interceptor="tk.mybatis.plugin.jdbctypeinterceptor">
    <property name="methods" value="all"/>
    <property name="typemaps" value="java.lang.string:varchar"/>
  </plugin>
</plugins>

特別注意,上面配置的兩個(gè)參數(shù)只是示例,不要照抄,最簡(jiǎn)單的就是下面這樣配置:

?
1
2
3
<plugins>
  <plugin interceptor="tk.mybatis.plugin.jdbctypeinterceptor"/>
</plugins>

因?yàn)檫@個(gè)插件就一個(gè)類,所以有什么問題自己看源碼解決,發(fā)現(xiàn)bug可以提!

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

原文鏈接:https://blog.csdn.net/isea533/article/details/58307149

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产乱码精品一品二品 | 中文字幕在线一区二区三区 | 精品成人免费一区二区在线播放 | 国产一区二区在线免费观看 | 久久成人精品视频 | 亚洲精品二区 | 狠狠艹| 日韩精品www | 综合久久亚洲 | 国产精品永久免费 | 免费在线看a| 精品国产黄a∨片高清在线 91精品国产91久久久 | 狼人综合av | 久久久久久久免费观看 | 精品国产一区二区三区av性色 | 四虎免费在线播放 | 日本精品一区二区三区在线观看视频 | 中文字幕在线观看一区二区 | 天天干夜夜爽 | 蜜桃国精产品二三三区视频 | 美日韩一区二区三区 | 精品久久久久久久久久久久久久 | 特及毛片| 欧美成人一区二免费视频软件 | 人人干天天干 | 中文字幕在线免费看 | 激情欧美一区二区三区中文字幕 | 色网站在线 | 亚洲欧美在线一区 | 亚洲精品成人在线 | 欧美精品三区 | 国产日韩高清在线 | 精品国产三级 | 国产一区二区免费 | 日韩成人精品 | 国产精品亚洲成在人线 | 一级a性色生活片久久毛片 国产精品久久久久久久久久免费看 | 亚洲国产成人av | 黄色片在线免费观看 | 亚洲精选一区二区 | 求av网址 |