Db.batchUpdate(...) 已然提供了支持,因为 update 这个词不仅意味着可以 delete 还意味着可以 update。 此外,通常批量删除满足条件的数据就是一个 sql 的事,这样: Db.update("delete from table where a=? and b=? and c=?", x, y, z);
@JFinal StrKit.join(...) 这种方式不行呀,int update = Db.update("update bx_edums_schedule set is_deleted = '1' where c_id = ? and id in (?)",p_campusId, StrKit.join(ids,","));
你的 StrKit.join(ids,",") 这个代码最终生成的是一个字符串,里面有很多个参数直接放在 in 里面去,否则你的 in 里面就可拼接出同样数量的问号来对应
你这个情况比较复杂,我直接说一下正确的使用结果,假定一共有三个参数: Object[] paras = new Object[3]; paras[0] = p_campusId; paras[1] = ids[0]; paras[2] = ids[1];
Db.update("update bx_edums_schedule set is_deleted = '1' where c_id = ? and id in (?, ?)", paras);
注意看上面,问号是三个,参数 paras 数组正好是三个元素。而且特别重要是的 p_campusId 与 ids 这两个参数是要合并到同一个数组中去的,除非你的 ids 不是数组,可以这样: Db.update("update bx_edums_schedule set is_deleted = '1' where c_id = ? and id in (?, ?)", p_campusId, id1, id2);
如果是数组,可以这样: Db.update("update bx_edums_schedule set is_deleted = '1' where c_id = ? and id in (?, ?)", p_campusId, ids[0], ids[1]);
此外,通常批量删除满足条件的数据就是一个 sql 的事,这样: Db.update("delete from table where a=? and b=? and c=?", x, y, z);