MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作

一、Mybatis-Plus 多记录操作

按照主键删除多条记录

List<Long> ids= Arrays.asList(new Long[]{2,3})

userDao.deleteBatchIds(ids);

示例代码如下:

java 复制代码
    @Test
    void testDelete(){
        //删除指定多条数据
        List<Long> list = new ArrayList<>();
        list.add(1402551342481838081L);
        list.add(1402553134049501186L);
        list.add(1402553619611430913L);
        userDao.deleteBatchIds(list);
    }

根据主键查询多条记录

List<Long> ids= Arrays.asList(new Long[]{2,3});

List<User> userList = userDao.selectBatchIds(ids);

示例代码如下:

java 复制代码
    @Test
    void testDelete(){

        //查询指定多条数据
        List<Long> list = new ArrayList<>();
        list.add(1L);
        list.add(3L);
        list.add(4L);
        userDao.selectBatchIds(list);
    }

二、Mybatis-Plus 逻辑删除

如下图,描述的是房屋中介公司销售业绩数据,右边表是人员信息,左边表是开单信息,

员工1张业绩离职了,数据不需要留了,执行了delete操作,执行完,左边表的关联数据成为垃圾数据,年底如果统计报表,如下图,已经删除了,或者是脏数据,无法读取。问题出现了,统计数据不对,日常删除操作对业务会有伤害性,会将数据从数据库中删除。

如何解决? 我们不应该删除数据,在数据后面加个字段,如果是1就代表删除了。

删除操作业务问题:业务数据从数据库中丢弃。

逻辑删除:为数据设置是否可用状态字段,删除时设置状态字段为不可用状态,数据保留在数据库中。

逻辑删除操作步骤:

步骤一、数据库表中添加逻辑删除标记字段

数据库添加字段名 deleted 类型 int 长度 1

步骤二、实体类中添加对应字段,并设定当前字段为逻辑删除标记字段

步骤三、配置逻辑删除字面值

java 复制代码
@Data

public class User {

    private Long id;

    //逻辑删除字段,标记当前记录是否被删除
    @TableLogic(value = "0" ,delval = "1")
    private Integer deleted;
}

配置逻辑删除字面值全局配置:

XML 复制代码
mybatis-plus:
  global-config:
   db-config:
    logic-delete-field: deleted
      logic-not-delete-value: 0 
      logic-delete-value: 1

逻辑删除开启后,执行的删除语句变成了更新语句,操作完以后会用deleted字段值标记数据是否被删除,并且标记被删除的数据,是不参与到Mabatis-Plus的API查询的过程中的,如果想查这些数据通过自己编写SQL语句。

相关推荐
basic_code4 天前
Spring boot 整合mybatis-plus
java·spring boot·mybatis·mybatis-plus
天蓝蓝235287 天前
MyBatisPlus 用法详解
mybatis-plus
kong790692818 天前
MybatisPlus入门(八)MybatisPlus-DQL编程控制
mybatis-plus
珍珠是蚌的眼泪19 天前
MyBatis-Plus
mybatis·mybatis-plus
水蓝烟雨24 天前
整合Mybatis-plus及最佳实践
mybatis-plus
cyt涛1 个月前
主键冲突问题
数据库·mybatis·事务·mybatis-plus·主键·id·冲突
cyt涛1 个月前
公共字段自动填充-MyBatis-Plus
java·数据库·mybatis·mybatis-plus·threadlocal·自动填充·公共字段
Damon小智1 个月前
SpringCloud-持久层框架MyBatis Plus的使用与原理详解
sql·spring·spring cloud·mybatis·mybatis-plus
yb0os11 个月前
MybatisPlus
数据库·oracle·mybatis·mybatis-plus