前端傳入逗號分隔 ID 字符串("1,2,3,4,5,6,7"),需轉為陣列執行批量刪除:DELETE FROM T_LABEL_SDSALES WHERE SDSALES_ID IN (1,2,3,4,5,6,7)。
string SDSALES_IDString = "1,2,3,4,5,6,7";
// 分割並過濾空值,轉為 string[]
Array array = SDSALES_IDString
.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)
.ToArray<string>();
public class T_LABEL_SDSALES {
public Array SDSALES_IDs { get; set; } // 對應 XML 中的 property
// 其他屬性...
}
<delete id="DeleteManyT_LABEL_SDSALES" parameterClass="T_LABEL_SDSALES">
DELETE FROM T_LABEL_SDSALES
WHERE <isNotNull property="SDSALES_IDs">
SDSALES_ID IN
<iterate property="SDSALES_IDs" conjunction="," open="(" close=")">
#SDSALES_IDs[]#
</iterate>
</isNotNull>
</delete>
| 標籤/屬性 | 作用 |
|---|---|
<isNotNull> | 判斷屬性非空才輸出 WHERE 條件,防止全表刪除 |
<iterate> | 遍歷陣列/集合生成重複 SQL 片段 |
property | 指定要遍歷的屬性名(SDSALES_IDs) |
conjunction | 元素間連接符,此處為逗號 |
open/close | 整體包裹字符,生成 (...) |
#SDSALES_IDs[]# | 佔位符:[] 表示取當前迭代元素值 |
DELETE FROM T_LABEL_SDSALES WHERE SDSALES_ID IN (1,2,3,4,5,6,7)
public abstract class BatchRepository<T> {
protected void BatchDelete(string sqlMapId, IEnumerable<object> ids) {
var param = new Hashtable { { "Ids", ids.ToArray() } };
SqlMap.Delete(sqlMapId, param);
}
}
// XML 通用片段
<iterate property="Ids" conjunction="," open="(" close=")">
#Ids[]#
</iterate>