Mybatis Sql片段的應用

2022-01-13 03:15:01 字數 894 閱讀 5695

在乙個查詢裡,針對各種不同資料庫,有時候只是一部分 sql 是不相同的,為避免相同的部分複製多次,所以將不相同的部分進行適當的隔離,再重用就可以了。

在 mybatis 裡宣告兩段 片段,它們分別對應不同資料庫:

可以發現,id 屬性的值是相同的,而 databaseid 不同。在引用時將該 id 值賦給 include 的 refid,這樣 mybatis 就可以根據資料庫的不同來選擇相符的 sql 片段。

接下來完整配置步驟如下:

sqlserver

db2oracle

mysql

h2postgresql

配置好 propertiesfactorybean 和 vendordatabaseidprovider,然後為 sqlsessionfactorybean 的 databaseidprovider 屬性加上 ref 引用。

select orggradecategoryid, orggradecategoryname, orggradecategorycode, sortcode, description, isenabled, createtime

from baseorggradecategory

order by sortcode desc

and orggradecategoryname like '%' + # + '%'

and orggradecategoryname like '%' || # || '%'

上述**已針對 sqlserver 和 postgresql 兩個資料庫宣告了 sql 片段,在執行時,mybatis 會根據資料庫的不同而自行選擇執行合適的片段。

實用的Mybatis SQL分析工具

大家開發過程中都遇到過這種問題吧,mybatis下xml檔案改了服務也重啟了,為啥還報錯一頓操作,還是報錯難道是改錯了,最後重啟下電腦,終於沒問題了,如果我們把日誌級別改下看下執行sql,看看是不是改的sql起效了,但是控制台列印的那些sql真的狠抓狂,各種引數值用 代替,例如 但如果是多張表聯合查...

mybatis sql語句中的foreach標籤

mybaits sql中不能直接用in只能用foreach替代 網上有很多關於foreach的例子,就像這樣 不知道是我用的不對還是怎麼著,這樣是就是報錯,原因也很簡單只要將 改成 就可以使用了。還有人說用這個 可以直接使用in,不懂也沒弄出來。collection listtag 要迴圈的集合 i...

MyBatis Sql語句中的轉義字元

1 在xml的sql語句中,不能直接用大於號 小於號要用轉義字元 如果用小於號會報錯誤如下 org.apache.ibatis.builder.builderexception error creating document instance.cause org.xml.sax.saxparseex...