MyBatisPlus批量删除(查询)与按字段名删除(查询)
Posted yangzhlu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatisPlus批量删除(查询)与按字段名删除(查询)相关的知识,希望对你有一定的参考价值。
删除:
1.MyBatisPlus批量删除使用ArrayList集合,使用deleteByBatchIds方法。
2.MyBatisPlus批量删除时,使用的时deleteByMap方法,map集合的键值对中,键是数据库表的字段名,值是需要删除的内容。
当map集合里面有多个键值对时,他们的关系是且,删除满足所有键值对条件的数据。
@Test public void testDeleteById() //批量删除 /*ArrayList<Integer> arrayList=new ArrayList(); arrayList.add(1); arrayList.add(2); arrayList.add(3); studentMapper.deleteBatchIds(arrayList);*/ //根据字段名字删除,map的键一定是数据库的字段名,当map里面含有两个不同的字段时,他们的关系是且 HashMap<String, Object> objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("s_name","bb"); objectObjectHashMap.put("s_sex","女");//删除s_name是bb且s_sex为女的数据 studentMapper.deleteByMap(objectObjectHashMap);
查询:
1.MyBatisPlus批量查询使用ArrayList集合,使用selectByBatchIds方法。
2.MyBatisPlus批量查询时,使用的时selectByMap方法,map集合的键值对中,键是数据库表的字段名,值是需要查询的内容。
MyBatisPlus使用updateBatchById()方法无法更新字段,仍返回true
一、问题
今天在用MybatisPlus提供的批量更新功能的时候,发现数据并没有更新,然后还返回true。
二、原因分析
打端点走之后,发现实体中的很多值都是Null,而数据库查询的时候带上is_delete=0 了,所以这才是最终导致了虽然没有更新成功,它也返回false了。
问题解决
实体中的isDeleted中的注解@TableLogic 删掉,然后将yml文件中的
logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
这个也去掉
以上是关于MyBatisPlus批量删除(查询)与按字段名删除(查询)的主要内容,如果未能解决你的问题,请参考以下文章
MyBatisPlus使用updateBatchById()方法无法更新字段,仍返回true