Mybatis動態(tài)SQL foreach標(biāo)簽用法實例
需求:傳入多個 id 查詢用戶信息,用下邊兩個 sql 實現(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)
這樣我們在進(jìn)行范圍查詢時,就要將一個集合中的值,作為參數(shù)動態(tài)添加進(jìn)來。
這樣我們將如何進(jìn)行參數(shù)的傳遞?
1、實體類
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 語句:
select 字段 from user where id in (?)
foreach標(biāo)簽用于遍歷集合,它的屬性
collection:代表要遍歷的集合元素,注意編寫時不要寫#{} open:代表語句的開始部分 close:代表結(jié)束部分 item:代表遍歷集合的每個元素,生成的變量名 sperator:代表分隔符以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. SQL Server事務(wù)日志意外增大的處理方法2. mysql判斷表是否存在然后批量刪除的操作3. Sql Server2005學(xué)習(xí)日記(01)4. 盤點SqlServer 分頁方式和拉姆達(dá)表達(dá)式分頁5. AIX環(huán)境下實現(xiàn)DB2向Windows 2000遷移6. SQLite教程(六):表達(dá)式詳解7. MariaDB10.5.6的安裝與使用詳解8. MySQL中binlog+dump備份還原詳細(xì)教程9. SQLite教程(四):內(nèi)置函數(shù)10. mysql之如何查找配置文件my.ini的位置
