(1).根据Id删除

    1. //根据Id删除
    2. @Test
    3. public void deleteById() {
    4. // 返回影响行数,删除1个数据,就影响一行
    5. int count = userMapper.deleteById(1508714176735117313L);
    6. System.out.println(count);
    7. }

    (2).批量删除

        //根据id批量删除
    
        @Test
        public void batchDelete() {
            //   返回影响行数,删除多个数据,就影响多行
            int count = userMapper.deleteBatchIds(Arrays.asList(1508714176735117313L, 1508714176735117313L));
            System.out.println(count);
        }
    

    (3).条件删除

      //条件查询
    
        @Test
        public void conditionDelete() {
            /**
             *   name = 东方不败,age= 20
             *
             * */
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("name", "东方不败");
            columnMap.put("age", 20);
            int count = userMapper.deleteByMap(columnMap);
        }
    

    (4).逻辑删除

    • 物理删除:真实删除,将对应的数据从数据库中,之后查询不到此条被删除数据;
    • 逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后再在数据库中仍旧能看到此条数据记录。在表中增加is_delete字段来标识是否删除,查询时可以根据这个字段跳过

    如果您有兴趣,可以详细了解一下物理删除与逻辑删除的作用场景
    逻辑删除的使用场景:

    • 可以进行数据恢复;
    • 有关联数据,不便删除。

    在表添加Int型deleted 字段,作为逻辑删除标志,每次执行删除时,修改标志位。 0 表示没有删除,1
    表示删除。并且修改实体类,添加新的属性Intger型的deleted

    @Data
    public class User {
        //
        @TableId(type = IdType.ASSIGN_ID)
        private Long id;
    
        private String name;
        private Integer age;
        private String email;
        //  驼峰命名  对应的数据库的字段create_time、update_time
        @TableField(fill = FieldFill.INSERT)
        private Date createTime;
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Date updateTime;
    
    
    
        // 乐观锁 Version属性
        @TableField(fill = FieldFill.INSERT)
        @Version
        private Integer version;
        // 逻辑删除  deleted属性
        @TableLogic
        @TableField(fill = FieldFill.INSERT )
        private Integer  deleted;
    
    
    }
    

    当我们配置逻辑删除后,为了演示效果。我们直接在后台修改部分数据的逻辑状态,将它们设为1
    。权当它们已经被“逻辑删除”了,接下来我们再执行查询所有`findAll方法。思考一下,在控制台中,会显示全部记录吗?而目前数据库后台有10条记录,我修改其中2条记录的deleted为1,其他的设为0,那么控制台又会显示几条记录呢?
    删除与逻辑删除 - 图1
    删除与逻辑删除 - 图2
    答案很明显,结果只有8条。不过这里通过sql日志,可以发现,配置完逻辑删除后,再执行查询操作,会添加限制条件了where deleted = 0,默认查询没有被“逻辑删除”的数据。
    (5).物理删除
    数据可贵!删除请三思!