Mybatis動(dòng)態(tài)SQL foreach標(biāo)簽用法實(shí)例
需求:傳入多個(gè) id 查詢用戶信息,用下邊兩個(gè) sql 實(shí)現(xiàn):
SELECT * FROM USERS WHERE username LIKE ’%張%’ AND (id =10 OR id =89 OR id=16)
SELECT * FROM USERS WHERE username LIKE ’%張%’ AND id IN (10,89,16)
這樣我們?cè)谶M(jìn)行范圍查詢時(shí),就要將一個(gè)集合中的值,作為參數(shù)動(dòng)態(tài)添加進(jìn)來(lái)。
這樣我們將如何進(jìn)行參數(shù)的傳遞?
1、實(shí)體類
public class QueryVo implements Serializable { private List<Integer> ids; public List<Integer> getIds() {return ids; } public void setIds(List<Integer> ids) {this.ids = ids; } }
2、持久層接口
/*** 根據(jù) id 集合查詢用戶* @param vo* @return*/List<User> findInIds(QueryVo vo);
3、映射文件
<!-- 查詢所有用戶在 id 的集合之中 --><select resultType='user' parameterType='queryvo'> <!-- select * from user where id in (1,2,3,4,5); -->select * from user <where> <if test='ids != null and ids.size() > 0'> <foreach collection='ids' open='id in ( ' close=')' item='uid' separator=','>#{uid} </foreach></if> </where></select>
SQL 語(yǔ)句:
select 字段 from user where id in (?)
foreach標(biāo)簽用于遍歷集合,它的屬性
collection:代表要遍歷的集合元素,注意編寫(xiě)時(shí)不要寫(xiě)#{} open:代表語(yǔ)句的開(kāi)始部分 close:代表結(jié)束部分 item:代表遍歷集合的每個(gè)元素,生成的變量名 sperator:代表分隔符以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ORACLE回滾段表空間數(shù)據(jù)文件丟失或損壞處理方法2. 影響SQL server性能的關(guān)鍵三個(gè)方面 3. 淺談MySQL之select優(yōu)化方案4. DB2數(shù)據(jù)庫(kù)更新執(zhí)行計(jì)劃的幾個(gè)常見(jiàn)的方法5. MySQL case when使用方法實(shí)例解析6. PDO_MYSQL的一些預(yù)定義常量7. 如何在SQL Server中恢復(fù)數(shù)據(jù)8. MySQL 性能、監(jiān)控與災(zāi)難恢復(fù)9. Mysql查詢優(yōu)化之IN子查詢優(yōu)化方法詳解10. DB2 9的九大新特性
