一、Mybatis-Plus 多记录操作


按照主键删除多条记录

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

示例代码如下:

    @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);

示例代码如下:

    @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

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

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

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

 


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

mybatis-plus:
  global-config:
   db-config:
    logic-delete-field: deleted
      logic-not-delete-value: 0 
      logic-delete-value: 1

 


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

posted on 2024-11-25 18:14  努力--坚持  阅读(6)  评论(0编辑  收藏  举报