Mybatis中foreach的使用

白小羊發表於2024-11-19

首先我們要明白的是foreach的本質就是把資料庫能執行的sql在xml中按照一定語法來進行拼接,所以拼接之前,我們瞭解一下foreach標籤中幾個常見元素的作用
1.collection
‌List或Array‌:如果傳入的引數型別是List或Array,collection屬性的預設值分別是list和array。如果需要自定義集合名稱。
‌Map‌:如果傳入的引數是Map,collection屬性可以指定遍歷Map的keys、values或entrySet
2.item
集合遍歷中每一個元素的別名
3.open
拼接sql時最前面拼接的字串
4.separator
拼接sql時候兩個元素之間的分隔字串
5.close
拼接sql時最後面拼接的字串
6.index
index‌:在List或Array中,index為元素的序號索引;在Map中,index為遍歷元素的key值。
舉一個簡單的例子
一個簡單的sql
select * from blog where title is not null and (id=1 or id=2 or id=3)
1.我們使用map集合作為引數實現拼接
<select id="queryBlogForeach" parameterType="map" resultType="blog"> select * from blog <where> title is not null <foreach collection="ids" item="id" open="and (" separator="or" close=")"> id=#{id} </foreach> </where> </select>
2.我們使用list集合作為引數實現拼接
<select id="queryBlogForeach2" parameterType="list" resultType="blog"> select * from blog <where> title is not null <foreach collection="list" item="id" open="and (" separator="or" close=")"> id=#{id} </foreach> </where> </select>

相關文章