DAO.deletebyids这个方法是不是有bug

debug发现逻辑里面有个根据参数的个数和表的主键字段个数作对比,不一样就报错

微信图片_2025-05-23_170338_368.jpg

评论区

JFinal

2025-05-23 17:10

对比主键名数量与主键值数量,保障基本的参数正确

sbw

2025-05-23 17:11

@JFinal 主键就一个啊 这个方法不是传入多个id根据id删除吗

zzutligang

2025-05-23 17:42

@sbw 你理解错了,这个方法是传递复合主键的,复合主键有几个字段,这里就要传递几个值,这个方法功能还是删除一条数据。并不是你理解的传递多个主键值可以删除多条记录。

杜福忠

2025-05-23 22:56

@sbw Db.deleteByIds("user_role", "user_id, role_id", 123, 456); 是这样用的,不校验传入参数与表主键数量;
对应的sql是:DELETE FROM user_role WHERE user_id=123 AND role_id=456
注意是 AND 条件 ,不是OR 条件。

Model 是数据库表的映射对象,拼接sql前 校验ids数量没毛病。两个入口功能不一样。

PS:我们项目有自己封装一个D.java类,里面扩展了Db类的用法,其中就有传入一个ids list参数批量删除的(list参数是因为json传入的对象)。自己的类工具可以随意扩展贴合业务。

星矢

2025-05-26 09:29

这方法是复合主键的删除, 跟批量删除不是一个玩意。

sbw

2025-05-28 09:24

sbw

2025-05-28 09:24

sbw

2025-05-28 09:24

热门反馈

扫码入社