MyBatis 中將 List 集合作為 SQL IN 條件參數傳遞,需配合 <foreach> 標簽,關鍵在於 collection 屬性值的正確指定。
void updateContactsIsRead(List<Integer> logidList);
<update id="updateContactsIsRead">
UPDATE emaillog2
SET isRead = 1
WHERE isRead = 0
AND logid IN
<foreach collection="list" item="logid" index="index" open="(" close=")" separator=",">
#{logid, jdbcType=INTEGER}
</foreach>
</update>
| 屬性 | 值 | 說明 |
|---|---|---|
| collection | "list" | 單參數 List 時固定為 "list";@Param("ids") 時用 "ids" |
| item | "logid" | 迭代變量名,用於 #{logid} 引用 |
| open/close | "("/")" | IN 子句括號 |
| separator | "," | 元素分隔符 |
// 接口
void update(@Param("ids") List<Integer> ids, @Param("status") int status);
// XML
<foreach collection="ids" item="id" ...> #{id} </foreach>
使用 @Param 顯式命名時,collection 對應參數名。