Mybatis筆記 SQL標籤方法

2022-07-23 03:48:11 字數 3301 閱讀 2639

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>

//可以自動處理第乙個and

finduserlist" parametertype="user" resulttype="user">

select * from user

and id=#

if>

and username like '%$%'

if>

sql中可將重複的sql提取出來,使用時用include引用即可,最終達到sql重用的目的,如下:

//建立sql片段

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片段"/>

向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)vo類

public

class queryvo

(3)對映檔案

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)測試程式

//構造查詢條件list

listuserlist = 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

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>

如果陣列中是簡單型別則寫為#,不用再通過ognl獲取物件屬性值了。

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...