sql 標籤作用類似於封裝,將sql語句封裝起來
include 標籤就是用來呼叫sql標籤封裝的sql語句
舉個栗子
上面等價於 select res_type_id,res_type from pub_res_type
也可以用sql不僅僅可以封裝字段,也可以封裝整個sql語句或者判斷條件
1、通過pojo類傳遞list
向sql傳遞陣列或list,mybatis使用foreach解析,foreach引數定義如下:collection指定輸入物件中集合屬性,item每個遍歷生成物件中,open開始遍歷時拼接的串,close結束遍歷時拼接的串,separator:遍歷的兩個物件中需要拼接的串。
(1)sql語句
select * from users where username like 『%張%』 and (id =10 or id =89 or id=16)
select * from users where username like 『%張%』 id in (10,89,16)
(2)pojo類
public class queryvo
(3)對映檔案
foreach元素的功能非常強大,它允許你指定乙個集合,宣告可以在元素體內使用的集合項(item)和索引(index)變數。它也允許你指定開頭與結尾的字串以及在迭代結果之間放置分隔符。這個元素是很智慧型的,因此它不會偶然地附加多餘的分隔符。
where 元素只會在至少有乙個子元素的條件返回 sql子句的情況下才去插入「where」子句,而且若語句的開頭為「and」或「or」,where 元素也會將它們去除。
1、#{},表示佔位符,起到佔位的作用
如果對映檔案中輸入引數的資料型別是簡單型別(string、double、integer、boolean等)的資料型別時,那麼佔位符中的變數名稱隨意起。
如果對映檔案中輸入型別的的資料型別是pojo型別時,那麼佔位符中的變數名稱必須是pojo物件的屬性名稱,如果pojo物件中的屬性包含了其他物件時,則變數名稱必須是屬性.屬性.屬性…。
2、${},表示拼接符,起到字串原樣拼接的作用
Java面試題分享 Mybatis
問 在mybatis中,有兩種佔位符,區別是什麼 答 解析傳遞進來的引數資料,katex parse error expected eof got at position 21 進來的引數原樣拼接在sql中,是預編譯處理,是字串替換,使用 可以有效的防止sql注入,提高系統安全性。問 當實體類中的屬...
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...