(七)mybatis學習之動態SQL

2021-07-10 23:03:07 字數 2128 閱讀 8132

mybatis的核心是對sql語句進行靈活的操作,通過表示式進行判斷,對sql進行靈活拼接、組裝。

動態sql包括:if、choose(when,otherwise)、where、set、trim、foreach、sql片段

if標籤比較簡單,這裡記錄一下文件內容的例子,通過看例子,就清楚的知道if是如何使用的了。

select * from blog

where state = 『active』

and title like #

select * from blog where state = 『active』

and title like #

and author_name like #

choose標籤跟if差不多,多了幾層判斷而已,這裡也使用文件的例子。

select * from blog where state = 『active』

and title like #

and author_name like #

and featured = 1

where 標籤可以自動配置where關鍵字,並自動去掉條件中的第乙個and

示例:配置檔案內容:

select * from tab_user

and username like '%$%'

and city like '%$%'

介面方法:

//查詢使用者列表

public listselectwhere(user user) throws exception;

執行測試後,在控制台看到如下的sql語句:

說明where標籤確實是把動態sql中的第乙個and去掉了

在update操作的時候,使用set標籤能自動配置set關鍵字,並把條件後面多餘的逗號去掉

update tab_user

username=#,

`password`=#,

where id=#

trim標籤更加靈活的處理字串之間的替換,可以實現where,set標籤的功能

1.使用trim實現where的功能:

select * from tab_user

and username like '%$%'

and city like '%$%'

select * from tab_user

and username like '%$%'

and city like '%$%'

2.使用trim實現set的功能

update tab_user

username=#,

`password`=#,

where id=#

update tab_user

username=#,

`password`=#,

where id=#

select * from tab_user where

id=#

select * from tab_user where id in

#

這裡也記錄一下文件的介紹,實際中需要用的時候再檢視文件進行開發。

示例1:

$.id,$.username,$.password 

select

,from some_table t1

cross join some_table t2

示例2:

$table

from

select

field1, field2, field3

mybatis學習之動態sql

1 select查詢 簡單的select類似如下 select id findbyid resultmap studentresult parametertype integer select from t student where id select 1 if 常用於各種查詢的條件判斷部分 se...

MyBatis學習總結 七 Mybatis快取

正如大多數持久層框架一樣,mybatis 同樣提供了一級快取和二級快取的支援 一級快取 基於perpetualcache 的 hashmap本地快取,其儲存作用域為session,當session flush 或 close之後,該session中的所有 cache 就將清空。2.二級快取,如 eh...

MyBatis學習總結 七 Mybatis快取

正如大多數持久層框架一樣,mybatis 同樣提供了一級快取和二級快取的支援 一級快取 基於perpetualcache 的 hashmap本地快取,其儲存作用域為session,當session flush 或 close之後,該session中的所有 cache 就將清空。2.二級快取,如 eh...