mybatis中入參存在 數組或List 時,使用foreach 進行動態拼接
foreach可以在SQL語句中迭代一個集合。它的屬性主要有item、index、collection、separator、close、open
- item:表示集合中每一個元素進行迭代時的別名
- index:指定一個名稱,用於表示在迭代過程中,每次迭代到的位置
- open:表示該語句以什么開始,in條件語句是以“(”開始
- separator:表示在每次迭代之間以什么符號作為分隔符,in條件語句以“,”作為分隔符
- close:表示該語句以什么結束,in條件語句是以“)”結束
- collection:該屬性必需指定,不同情況下,該屬性的值是不一樣的
- 若入參為單參數且參數類型是一個List,collection屬性值為list
- 若入參為單參數且參數類型是一個數組,collection屬性值為array
- 若傳入參數為多參數,就需要把它們封裝為一個Map進行處理
- 若傳入參數為多參數時,collection屬性值為傳入的列表名或數組名
<select id="getUserByRoleId_foreach_array" resultMap="userMapByRole"> select * from smbms_user where userRole in <foreach collection="array" item="roleIds" open="(" separator="," close=")"> #{roleIds} </foreach> </select>
注:mybatis在傳入多個參數的時候,要用注解 @Param()命名別名,否則會報錯