MyBatis-Plus学习笔记(四) 删除操作

狂神说Java:https://www.bilibili.com/video/BV17E411N7KN?p=13学习笔记


一、根据id删除

    @Test
    public void testDeleteById(){
        userMapper.deleteById(1L);
    }

二、通过id批量删除

    @Test
    public void testDeleteBatchID(){
        userMapper.deleteBatchIds(Arrays.asList(2,3,4));
    }

三、通过map删除

    @Test
    public void testDeleteMap(){

        HashMap<String, Object> map = new HashMap<>();
        map.put("name","hello");
        userMapper.selectByMap(map);
    

四、逻辑删除

  • 物理删除:把数据从数据库中移除
  • 逻辑删除:数据还在数据库中,但通过一个变量让它失效。如delete = 0 => delete = 1 (应用场景如:管理员可以查看删除记录,防止数据丢失,类似于回收站)

1.在数据库表中增加deleted字段

2.在实体类中添加属性逻辑删除注解@TableLogic

    @TableLogic //逻辑删除
    private Integer deleted;

3.在MybatisPlusConfig配置类中添加配置

   //逻辑删除组件
    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }

4.在application.yml中添加配置

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted  # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1        # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0    # 逻辑未删除值(默认为 0)

5.测试结果

本质是更新操作,而不是删除

查询3号用户

    @Test
    public void testSelectById(){
        User user = userMapper.selectById(3L);
        System.out.println(user);
    }

查询时自动过滤被逻辑删除的字段

猜你喜欢

转载自blog.csdn.net/qq_41694490/article/details/114273945