国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一篇聊聊Mybatis插件開發(fā)

開發(fā) 前端
允許在 plugin 元素中配置所需參數(shù),方法在插件初始化的時(shí)候就被調(diào)用了一次,然后把插件對(duì)象存入到配置中,以便后面再取出。

Mybatis的插件,主要用于在執(zhí)行sql前后,對(duì)sql進(jìn)行封裝加工,或者在sql執(zhí)行后,對(duì)數(shù)據(jù)進(jìn)行加工處理。常用于一些公共數(shù)據(jù)操作處理,例如:

  1. 分頁插件,在執(zhí)行sql查詢前增加分頁參數(shù)
  2. 多租戶系統(tǒng)中,增加租戶ID參數(shù)。
  3. 增加更新時(shí)間、創(chuàng)建時(shí)間、更新人、創(chuàng)建人的參數(shù)信息。
  4. 數(shù)據(jù)權(quán)限中,增加參數(shù)查詢。

插件開發(fā)過程

確定需要攔截的簽名

指定需要攔截的方法,通過方法簽名來指定,方法簽名即指定哪個(gè)類的哪個(gè)方法+方法參數(shù)。這里的類不能隨便寫,只能從以下幾個(gè)類中選,也就是說,MyBatis 插件可以攔截四大對(duì)象中的任意一個(gè)。

  • Executor 是執(zhí)行 SQL 的全過程,包括組裝參數(shù),組裝結(jié)果集返回和執(zhí)行 SQL 過程,都可以攔截。
  • StatementHandler 是執(zhí)行 SQL 的過程,我們可以重寫執(zhí)行 SQL 的過程。
  • ParameterHandler 是攔截執(zhí)行 SQL 的參數(shù)組裝,我們可以重寫組裝參數(shù)規(guī)則。
  • ResultSetHandler 用于攔截執(zhí)行結(jié)果的組裝,我們可以重寫組裝結(jié)果的規(guī)則。

我們來看以下mybatisplus的插件配置的簽名:

@Intercepts(
    {
        @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class}),
        @Signature(type = StatementHandler.class, method = "getBoundSql", args = {}),
        @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),
        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class}),
    }
)
public class MybatisPlusInterceptor implements Interceptor {
//...
}

type指定四大類型中的任意一個(gè),method指定攔截類型中方法,args指定方法參數(shù)。例如:

@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})

指定了攔截StatementHandler的prepare方法,方法有兩個(gè)參數(shù),一個(gè)是Connection類型,另一個(gè)是Integer類型。

public interface StatementHandler {

  Statement prepare(Connection connection, Integer transactionTimeout)
      throws SQLException;
      
      //....
      }

插件接口定義

在 MyBatis 中開發(fā)插件,需要實(shí)現(xiàn) Interceptor 接口。接口的定義如下:

public interface Interceptor {
 
  Object intercept(Invocation invocation) throws Throwable;
 
  Object plugin(Object target);
 
  void setProperties(Properties properties);
 
}
  • intercept 方法:它將直接覆蓋你所攔截對(duì)象原有的方法,因此它是插件的核心方法。通過 invocation 參數(shù)可以反射調(diào)度原來對(duì)象的方法。
  • plugin 方法:target 是被攔截對(duì)象,它的作用是給被攔截對(duì)象生成一個(gè)代理對(duì)象,并返回它。為了方便 MyBatis 使用 org.apache.ibatis.plugin.Plugin 中的 wrap 靜態(tài)方法提供生成代理對(duì)象。
  • setProperties 方法:允許在 plugin 元素中配置所需參數(shù),方法在插件初始化的時(shí)候就被調(diào)用了一次,然后把插件對(duì)象存入到配置中,以便后面再取出。

實(shí)現(xiàn)插件

創(chuàng)建個(gè)類實(shí)現(xiàn)Interceptor接口,并且在實(shí)現(xiàn)類上指定方法簽名即可。

最后需要在mybatis配置文件中配置插件

<plugins>
        <plugin interceptor="com.yjw.demo.mybatis.common.page.PageInterceptor">
        </plugin>
    </plugins>

最后建議看一下MybatisPlusInterceptor的實(shí)現(xiàn),里面還使用到了責(zé)任鏈設(shè)計(jì)模式。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-07-31 07:48:43

Java內(nèi)存虛擬機(jī)

2023-08-03 07:34:34

格式化字符串參數(shù)

2022-06-02 07:11:13

JVMJava

2023-12-08 08:26:05

數(shù)據(jù)存儲(chǔ)持久性

2021-11-15 07:47:40

字符串位置存儲(chǔ)

2021-10-30 07:55:00

BLE 藍(lán)牙開發(fā)

2022-10-08 15:07:06

ChatOps運(yùn)維

2021-04-16 07:46:13

Serverless 云開發(fā)FaaS

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2025-11-18 08:46:00

大模型強(qiáng)化學(xué)習(xí)Meta

2022-12-19 08:14:30

注解開發(fā)配置

2022-10-26 07:39:36

MVCC數(shù)據(jù)庫RR

2022-01-02 08:43:46

Python

2021-05-20 06:57:16

RabbitMQ開源消息

2023-04-20 08:00:00

ES搜索引擎MySQL

2022-02-07 11:01:23

ZooKeeper

2022-10-20 18:00:00

MyBatis緩存類型

2025-05-13 01:10:00

數(shù)據(jù)產(chǎn)品開發(fā)

2020-11-20 10:15:05

TensorFlow

2022-03-18 07:48:58

GhostNode.js開源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲欧美色婷婷| 成人欧美一区二区三区视频 | 欧美亚洲国产另类| 国产精品久久久久久亚洲伦| 亚洲尤物av| 韩日在线视频| 亚洲国产精品久久久久婷婷老年| 日韩一中文字幕| 亚洲一区二区精品视频| 亚洲欧美日本国产专区一区| 美女91在线看| 欧美黄色一级片视频| 欧美专区国产专区| 色偷偷久久一区二区三区| 一本久道综合久久精品| 国产高清在线a视频大全 | 日韩免费高清在线观看| 欧美日韩精品一区视频| 国产91高潮流白浆在线麻豆| 你懂的一区二区三区| 在线欧美三级| 日韩精品一区二区三区不卡| 成人在线小视频| 日韩av综合网| 亚洲国产成人私人影院tom | 欧美精品一区二区在线观看| 国产精品入口麻豆九色| 亚洲一级黄色| 不卡一本毛片| 美丽的小蜜桃4春潮| 日本一区二区三不卡| 欧美激情视频免费观看| 色婷婷香蕉在线一区二区| 精品无码三级在线观看视频| 精品视频高潮| 2024最新电影在线免费观看| 国产l精品国产亚洲区久久| 成人有码视频在线播放| 一区二区三区四区视频| 亚洲午夜精品网| 美女一区二区三区在线观看| 日韩电影不卡一区| 久久久123| 久久久久久77777| 欧美三级网色| 国产999精品久久久| 精品调教chinesegay| 亚洲.国产.中文慕字在线| 国内国产精品久久| 国产韩日影视精品| 97久久网站| 亚洲欧美视频一区二区| 久久精品视频91| 欧美日韩一区二区三区免费| 91高清视频在线免费观看| 欧美色精品在线视频| 国产精品网站在线观看| 国产在线视频一区二区| 欧美日韩一区二区国产| 欧美日韩一区二区三区四区不卡 | 影音先锋亚洲视频| 亚洲综合中文字幕在线| 国产亚洲一区二区三区四区| 全部av―极品视觉盛宴亚洲| 91精品国产91久久久久久黑人| 亚洲精品国产九九九| 羞羞电影在线观看www| 日韩欧美亚洲系列| 开心快乐六月丁香婷婷| www.精品在线| www.国产区| 国产免费内射又粗又爽密桃视频| 成人福利在线视频| 777精品视频| 色黄久久久久久| 欧美成人伊人久久综合网| 91成人国产精品| 一级做a爱片久久| 久久久不卡网国产精品一区| 国产成人免费视频网站高清观看视频| 最新成人av网站| 99国产精品一区二区| 国产丝袜一区| 男人亚洲天堂| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 欧美久久在线| av一区二区三区在线观看| 国产精品99蜜臀久久不卡二区 | 在线看的av| 欧美xxxxxxxxx59| 国产黄色免费网| 污色网站在线观看| 欧美一级免费播放| 日韩精品在在线一区二区中文| 国模一区二区三区私拍视频| 国产精品日韩在线观看| 欧美亚洲午夜视频在线观看| 久久久亚洲国产| 欧美激情综合色| 欧美大秀在线观看| 美女精品久久久| 久久精品在线视频| 日韩视频第一页| 深夜福利91大全| 亚洲欧美变态国产另类| 精品五月天久久| 亚洲成人a**站| 欧美一级在线视频| 777久久久精品| 欧美www视频| 精品盗摄一区二区三区| 精品在线观看国产| 中文字幕免费精品一区高清| 伊人成人开心激情综合网| 在线观看欧美成人| 中文字幕一精品亚洲无线一区| 少妇高潮久久久久久潘金莲| 色噜噜亚洲精品中文字幕| 久久777国产线看观看精品| 欧美综合第一页| 国产精品成人va在线观看| 国产日韩换脸av一区在线观看| 久久精品99久久| 性欧美.com| xxxx69视频| 日本中文字幕一区二区有码在线| 怡红院在线播放| 91久久青草| 99久久精品网| 蜜桃久久av一区| 欧美96在线丨欧| 久久国产一二区| 亚洲毛片播放| 日韩和欧美一区二区三区| 2020国产精品自拍| 欧美亚洲愉拍一区二区| 综合国产在线视频| 91手机在线视频| 无码专区aaaaaa免费视频| 国产精品影院在线| 成人综合日日夜夜| 亚洲精品婷婷| 国产精品女人毛片| 日韩欧美国产三级电影视频| 51精品在线观看| 久久精品国产理论片免费| 邪恶网站在线观看| 97caopron在线视频| 欧美午夜网站| 亚洲欧美清纯在线制服| 国产精品热久久久久夜色精品三区| 色综合久久中文字幕综合网| 色久欧美在线视频观看| 成人国产1314www色视频| 日韩欧美xxxx| 高清电影在线免费观看| 色棕色天天综合网| 国产91在线|亚洲| 天天色天天操综合| 一区二区三区www| 国产精品国产一区二区| 成人亚洲在线观看| 你懂得影院夜精品a| 亚洲作爱视频| 婷婷成人综合网| 国自在线精品视频| 欧美一级视频免费看| 欧洲日本在线| 亚洲国产aⅴ精品一区二区| 欧美午夜精品| 国产亚洲短视频| 欧美狂野另类xxxxoooo| 欧美极品少妇xxxxⅹ喷水| 久久久久久高清| 久久国产精品国产精品| av网址在线| 久久蜜桃av| 97se狠狠狠综合亚洲狠狠| 欧美日韩一区视频| 欧美激情在线有限公司| 制服国产精品| 国产一二三区在线| 国产精品网址| 国产精品18久久久久久久网站| 色综合色综合色综合色综合色综合 | 国内成人自拍视频| 欧美午夜久久久| 欧美日韩福利电影| 欧美一区二区福利| 蜜芽视频在线观看| 中文字幕日本一区| 视频一区中文字幕| 欧美性xxxx极品hd满灌| 欧美精品videosex极品1| 自拍偷拍一区二区三区| av在线电影院| 怕怕欧美视频免费大全| 99久久精品一区二区| 欧美成人在线直播| 国产精品久久久久久久av电影|