同时更新多条记录,直接用主键ID更新,前台获取多个主键ID连接的字符串
报错条件:
- 数据库主键ID是自增的Integer;
- 前台获取的多个主键ID拼接的串如:1,2,3 (PS:如果此处主键ID在数据库中是字符串,则需要循环拼接单引号或者其他方式,在此不赘述。)
- 后台使用框架,需要自主写sql,执行。
符合上述条件,下面类似写法会报错
public void resetRealname(String ids) {
String sql = " UPDATE c_members SET REAL_NAME = NULL, CARD_ID = NULL, PI = NULL, IS_PROVE = 2, REALNAME_FROM = 0 "
+ " WHERE ID IN ( ? ) ";
baseDao.updateRisk(sql, ids);
}
解决方案
public void resetRealname(String ids) {
String sql = " UPDATE c_members SET REAL_NAME = NULL, CARD_ID = NULL, PI = NULL, IS_PROVE = 2, REALNAME_FROM = 0 "
+ " WHERE ID IN ( " + ids + " ) ";
baseDao.updateRisk(sql);
}
具体原因,暂时没去深究,应该跟jdbc有关系。可以参考