MybatisPlus学习笔记------CRUD操作---delete操作

MybatisPlus官网: MyBatis-Plus

常规物理删除操作:

   @Test
    //测试删除
    public void testDelete(){
     
        //按id删除
        userMapper.deleteById(1241925679608598530L);
        //按id批量删除
        userMapper.deleteBatchIds(Arrays.asList(0L,1242027510946865154L));
        //按条件删除,map
        Map<String,Object> map = new HashMap<>();
        map.put("name","放逐之刃");
        userMapper.deleteByMap(map);
    }

逻辑删除

​ 物理删除:从数据库中直接移除

​ 逻辑删除:在数据库中没有被移除,而是通过一个变量来让他失效,deteled = 0 => deteled = 1

防止数据流失,例子某些网站管理员可以查看已经删除的数据;
测试:

  1. 在数据表中添加一个deleted字段

  2. pojo实体类中增加属性 并标注@TableLogic注解

     @TableLogic
     private Integer deleted;
    
  3. springboot配置插件

    • application.yml 加入配置(如果你的默认值和mp默认的一样,该配置可无):

      mybatis-plus:
        global-config:
          db-config:
            logic-delete-field: flag  #全局逻辑删除字段值 3.3.0开始支持,详情看下面。
            logic-delete-value: 1 # 逻辑已删除值(默认为 1)
            logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
      
    • 注册 Bean(3.1.1开始不再需要这一步):

      @Configuration
      public class MyBatisPlusConfiguration {
               
      
          @Bean
          public ISqlInjector sqlInjector() {
               
              return new LogicSqlInjector();
          }
      }
      
    • 效果: 使用mp自带方法删除和查找都会附带逻辑删除功能 (自己写的xml不会)

      example
      删除时 update user set deleted=1 where id =1 and deleted=0
      查找时 select * from user where deleted=0
      
    • 全局逻辑删除: 3.3.0开始支持

      如果公司代码比较规范,比如统一了全局都是flag为逻辑删除字段。

      使用此配置则不需要在实体类上添加 @TableLogic。

      但如果实体类上有 @TableLogic 则以实体上的为准,忽略全局。 即**先查找注解再查找全局,**都没有则此表没有逻辑删除。

      mybatis-plus:
        global-config:
          db-config:
            logic-delete-field: flag  #全局逻辑删除字段值
      

		  附件说明
		
			- 逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。
			- 如果你需要再查出来就不应使用逻辑删除,而是以一个状态去表示。
	
			如: 员工离职,账号被锁定等都应该是一个状态字段,此种场景不应使用逻辑删除。
		
			- 若确需查找删除数据,如老板需要查看历史所有数据的统计汇总信息,请单独手写sql。
  1. 测试逻辑删除

        @Test
        //测试逻辑删除
        public void testDeleteLogic(){
           
            userMapper.deleteById(1L);
        }
    
    

    结果分析:

MybatisPlus学习笔记------CRUD操作---delete操作_第1张图片

你可能感兴趣的:(MyBatis-Plus笔记,java,mp)