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

mybatisplus 更新字段为null

MyBatisPlus:DQL编程控制(条件查询方式查询投影查询条件设定字段映射与表名映射)

MyBatisPlus删除逻辑

MyBatisPlus删除逻辑

MyBatisPlus实现逻辑删除