jfinal项目删除或修改多条数据的sql语法如何写

update sw_oplog set `status`=1 where id in(1,2,3)   这是修改多条记录的sql语句

在jfinal里面我是这样写的

Model层:

public int updoplogStatus(String oplog_ids) {

int count = Db.update("update sw_oplog set `status`=0 where id in(?)",oplog_ids);

return count;

}

controller层:

public void updOplogStatus() {

String oplog_ids="1,2,3"; //这是死的测试数据

int count=Sw_oplog.dao.updoplogStatus(oplog_ids);

if(count>0) {

setAttr("ret", 200);

}else {

setAttr("ret", 0);

}

renderJson();

}

然后我执行之后     数据库只修改了id为1的status  2,3没有被修改

请问jfinal这个批量修改语法是怎么写的?

评论区

lyh061619

2018-03-27 16:11

这个问题,首先,你传的是一个字符串,虽然将分别用逗号隔开,但是这么传肯定是无法给你识别的,就会造成只识别id=1的数据,另外看你的说明是想批量进行修改的话,必须对以上String oplog_ids="1,2,3";做下处理转换成字符串数组如: String[] ids = oplog_ids.split(",");,然后在业务层用个for循环如:
for (String id : ids){
int count = Db.update("update sw_oplog set `status`=0 where id = ?", id);
}
即可批量操作。

JFinal

2018-03-27 16:12

where id in(?) 这里头就一个问号,但却使用了多个参数,是 JDBC 不支持

有多少个参数就要用多少个问号,例如:
Db.update("... where id in (?, ?, ?)", 1, 2, 3);

xufu123

2018-03-27 21:43

xufu123

2018-03-27 21:45

@JFinal 波总,解决了 我直接把参数where id in (“+拼接在这里就可以了+”)", 懒人方式

xufu123

2018-03-27 21:45

@lyh061619 谢谢热情的学长

lyh061619

2018-03-27 21:49

@xufu123 不要用拼接,要使用问号占位符,养成良好的习惯,因为拼接的方案往往会存在没必要的安全隐患。

ojbk

2018-10-29 09:16

@JFinal 如果有两个主键怎么操作

热门反馈

扫码入社