mpper.xml對映檔案中定義了運算元據庫的sql,並且提供了各種標籤方法實現動態拼接sql。每個sql是乙個statement,對映檔案是mybatis的核心。
nameplace命名空間作用就是對sql進行分類化管理
<?xml version="1.0" encoding="utf-8" ?>//curd操作標籤
//if片段(1)selectone與selectlist方法
selectone表示查詢出一條結果集進行對映,使用selectone查詢多條記錄會丟擲異常。selectlist表示查詢出乙個列表(多條記錄)進行對映,對於使用selectone可以實現的查詢,使用selectlist必然也可以實現(list中只有乙個物件)。
(3)**物件內部呼叫
//進行空字串校驗
finduserlist" parametertype="user" resulttype="user">
select * from user where 1=1
and id=#
if>
and username like '%$%'
if>
//可以自動處理第乙個andsql中可將重複的sql提取出來,使用時用include引用即可,最終達到sql重用的目的,如下:finduserlist" parametertype="user" resulttype="user">
select * from user
and id=#
if>
and username like '%$%'
if>
//建立sql片段向sql傳遞陣列或list,mybatis使用foreach解析,foreach引數定義如下:collection指定輸入 物件中集合屬性, item每個遍歷生成物件中,open開始遍歷時拼接的串,close結束遍歷時拼接的串,separator:遍歷的兩個物件中需要拼接的串。query_user_where">
and id=#
if>
and username like '%$%'
if>
//使用include引用sql片段
finduserlist" parametertype="user" resulttype="user">
select * from user
query_user_where"/>
namespace.sql片段"/>
(1)sql語句
select * from users where username like '%張%' and (id =10 or id =89 or id=16)(2)vo類select * from users where username like '%張%' id in (10,89,16)
public(3)對映檔案class queryvo
select * from user
0">
ids" item="user_id" open="and (" close=")" separator="or">
id=#
if>
list" item="item" open="and id in( "separator="," close=")">#
if>
public listselectuserbylist(list userlist);(3)測試程式
//構造查詢條件listlistuserlist = new arraylist();
user user = new user();
user.setid(1);
userlist.add(user);
user = new user();
user.setid(2);
userlist.add(user);
//傳遞userlist列表查詢使用者列表引數含義:index為陣列的下標,item為陣列每個元素的名稱,名稱隨意定義,open迴圈開始,close迴圈結束,separator中間分隔輸出。
selectuserbyarray" parametertype="object" resulttype="user">
select * from user
array" index="index" item="item"
open="and id in("separator=","close=")">#
if>
public listselectuserbyarray(object userlist)(3)測試程式
//構造查詢條件list如果陣列中是簡單型別則寫為#,不用再通過ognl獲取物件屬性值了。object userlist = new object[2];
user user = new user();
user.setid(1);
userlist[0]=user;
user = new user();
user.setid(2);
userlist[1]=user;
//傳遞user物件查詢使用者列表
selectuserbyarray" parametertype="object" resulttype="user">
select * from user
array"index="index"item="item"
open="and id in("separator=","close=")">#
if>
public listselectuserbyarray(object userlist)(3)測試程式
//構造查詢條件list
object userlist = new object[2];
userlist[0]=」1」;
userlist[1]=」2」;
//傳遞user物件查詢使用者列表
MyBatis 動態sql標籤
findbyaccount parametertype com.lin.entity.account resulttype com.lin.entity.account select from account test id 0 id if test username null and userna...
MyBatis動態SQL常用標籤 if標籤
在用mybatis之前,我們如果進行條件查詢的話 條件查詢需要判斷從前端獲取的值是否存在來進行操作 是利用 拼接來進行實現的。第一步 在介面中寫出條件查詢的方法 根據姓名和密碼進行查詢 param是mybatis所提供的 org.apache.ibatis.annotations.param 作為d...
mybatis動態SQL之if標籤
我們根據實體類的不同取值,使用不同的 sql 語句來進行查詢。比如在 id 如果不為空時可以根據 id 查詢,如果 username 不同空時還要加入使用者名稱作為條件。這種情況在我們的多條件組合查詢中經常會碰到。根據使用者資訊,查詢使用者列表 param user return listfindb...