问题引入
众所周知mybatis-plus有函数recordMapper.deleteBatchIds()可以一次删除多条数据,但是这个函数的删除是根据你输入的数字映射到表中的Id的,那有没有办法映射到其他的列来删除多条数据嘞?
解决办法
我们都知道可以构造来为查询QueryWrapper<>()添加限制条件,同样的它可以用到Delete这边。
我们可以试一下:
recordMapper.delete(new QueryWrapper<Record>()
.eq("type", 1)
.eq("type", 2));
上面的代码,翻译过来就是这样:
delete from record where type=1 and type=2
这明显不mybatis-plus符合我们的预期,但是如果把逻辑连接词and改成or就得到了我们想要的。
查询mybatis-plus文档可知这样写就可以了:
recordMapper.delete(new QueryWrapper<Record>()
.eq("type", 1)
.or()
.eq("type", 2));
其他
在我使用的时候发现了一个有意思的地方,下面一个删除一个更新同样是ById,但是需要的参数不一样,思考了下发现确实合理,因为update本身就要修改数据,所以要传过去被你修改过的实体类才可以,而删除只需要id就可以了,它删除整条数据
deleteById(Serializable id)
updateById(T entity)
mybatis-plus文档
附上mybatis-plus文档链接: