mybatis 解決join語句快取重新整理研究

2021-08-31 14:15:11 字數 534 閱讀 2712

專案中由於需要從ibatis公升級到mybatis,因為實現的改變,快取功能也相應的改變,由於需要實現乙個當前mybatis沒提供的快取功能,花了些時間研究了原始碼,並且實現了相應的功能,現就一些心得與大家分享,由於實現中使用了mybatis的plugin***,有可能會改變mybatis的核心行為,所以不保證我的方法足夠的安全,只是乙個解決問題的思路,言歸正傳:

select a.name, b.detail from a left join b.id = a.id

得到cahcekey之後把它儲存到乙個map>型別的map裡,string對應乙個sqlid, 比如上面提到的sql語句 getinfo, 不過還要加上namesapace那就是 a.getinfo, set儲存某個sql所對應的不同查詢引數的不同結果。當我們得到想要flush的select 的cachekey之後,就可以攔腰executor class的update方法(包括insert,update,delete), 至於過程很簡單,上原始碼。

在sqlmapconfig.xml中加上:

實現interceptor介面:

sql中的join語句

sql的join分為三種,內連線 外連線 交叉連線。以下先建2張表,插入一些資料,後續理解起來更方便一些。create table emp empno int,name char 20 depart int create table depart dpno int,dpname char 20 in...

sql中join語句區別

表如下 aid anum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表b記錄如下 bid bname 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 200603...

MySQL SQL 之join連線語句

join 建表語句 drop database ifexists test create database test use test 左表t1 drop table ifexists t1 create table t1 id int notnull,name varchar 20 insert ...