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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

idea打印sql的插件_[Mybatis]-[基础支持层]-插件-自定义简易SQL打印插件

發(fā)布時(shí)間:2023/12/19 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea打印sql的插件_[Mybatis]-[基础支持层]-插件-自定义简易SQL打印插件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該系列文章針對(duì) Mybatis 3.5.1 版本

在 mybatis 中允許針對(duì) SQL 在執(zhí)行前后進(jìn)行擴(kuò)展操作,而這些擴(kuò)展操作也叫做插件。

在 Mybaits 中允許用插件來攔截的方法包括:

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)

實(shí)現(xiàn)一個(gè) plugin 的 步驟如下

step1、插件實(shí)現(xiàn)類實(shí)現(xiàn)了 Interceptor 接口

step2、通過注解 @Intercepts 指定了該插件需要攔截的對(duì)象

step3、在 mybatis-config.xml 中的 <plugins> 下配置插

自定義簡(jiǎn)易 SQL 打印插件

簡(jiǎn)易 SQL 打印插件,忽略細(xì)節(jié)

思路

SQL 在 Mybatis 啟動(dòng)完成后已經(jīng)被加載到了 Configuration 對(duì)象中,所以無論是 Executor 、ParameterHandler、ResultSetHandler 、StatementHandler 哪一種情況下的攔截,只要持有了Configuration 對(duì)象也就相當(dāng)于有了執(zhí)行 SQL,而SQL 參數(shù)也是一樣的,而在 Mybatis 運(yùn)行期間 Configuration 對(duì)象會(huì)伴隨整個(gè)執(zhí)行流程,包括 Executor 、ParameterHandler、ResultSetHandler 、StatementHandler 等環(huán)節(jié)。

在 Mybatis 中執(zhí)行的處理流程無論是需要參數(shù)處理或者結(jié)果集處理,最后所有的方法都會(huì)經(jīng)由 Executor 所有,只需要攔截 Executor 對(duì)象即可。

針對(duì) SQL 的打印,及其結(jié)果打印,只針對(duì)增刪改查方法,而在 Executor 中,增刪改由 Executor#update 完成,查則由 Executor#query 實(shí)現(xiàn)。

所以針對(duì) SQL 的打印只需要攔截 Executor#update 和 Executor#query方法即可

代碼實(shí)現(xiàn)

step1、創(chuàng)建插件類 PrintSqlPlugin 并實(shí)現(xiàn) Interceptor 接口

step2、追加注解 @Intercepts 指定攔截對(duì)象

方法都有重載的方法,需要指定多個(gè)特定的參數(shù)來特指特定的方法,這里為演示案例不寫全

step 1、和step 2 實(shí)現(xiàn)后的代碼結(jié)構(gòu)如下:
代碼實(shí)現(xiàn)如下:

Interceptor#interceptor部分代碼如下:

主體執(zhí)行邏輯(具體實(shí)現(xiàn)不展開)

  • 1、獲取執(zhí)行 SQL。(如:select * from user_info where id = ?)
  • 2、獲取執(zhí)行 SQL 對(duì)應(yīng)的參數(shù)。(如:param1 = 1)
  • 3、將SQL 對(duì)照對(duì)應(yīng)的參數(shù)進(jìn)行拼接,并打印相關(guān)SQL數(shù)據(jù)。(如:select * from user_info where id = 1)
  • 4、調(diào)用原有對(duì)象 target 執(zhí)行sql查詢,并獲得結(jié)果集
  • 5、打印結(jié)果數(shù)據(jù)

step3、在 mybatis-config.xml 中配置

測(cè)試,控制臺(tái)打印日志如下

總結(jié)

以上是生活随笔為你收集整理的idea打印sql的插件_[Mybatis]-[基础支持层]-插件-自定义简易SQL打印插件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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