MyBatis Plus自定义全局操作、AutoSqlInjector、逻辑删除

自定义全局操作

根据 MybatisPlus 的 AutoSqlInjector 可以自定义各种你想要的 sql ,注入到全局中,相当于自 定义 Mybatisplus 自动注入的方法。

之前需要在 xml 中进行配置的 SQL 语句,现在通过扩展 AutoSqlInjector 在加载 mybatis 环境 时就注入。
8.1 AutoSqlInjector

  1. 在 Mapper 接口中定义相关的 CRUD 方法

在这里插入图片描述
2) 扩展 AutoSqlInjector inject 方法,实现 Mapper 接口中方法要注入的 SQL

package com.blh.mp.inject;

import com.baomidou.mybatisplus.entity.TableInfo;
import com.baomidou.mybatisplus.mapper.AutoSqlInjector;

import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.apache.ibatis.mapping.SqlSource;
import org.apache.ibatis.session.Configuration;


public class MySQLInject extends AutoSqlInjector {
   /**
    * 扩展inject方法
    */
   @Override
   public void inject(Configuration configuration, MapperBuilderAssistant builderAssistant, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
       //将EmployeeMapper接口中定义的deleteAll,处理成对应的MappedStatement对象,加入到Configuration对象中
       //注入的SQL语句
       String sql = "delete from " +table.getTableName();
       //注入的方法名  一定要与EmployeeMapper中的方法名一致
       String method = "deleteAll";
       //构造SQLSource对象
       SqlSource sqlSource = languageDriver.createSqlSource(configuration,sql,modelClass);
       //构造一个删除的MappedStatement
       this.addDeleteMappedStatement(mapperClass,method,sqlSource);
   }
}

  1. 在 MP 全局策略中,配置 自定义注入器
    在这里插入图片描述

逻辑删除

假删除、逻辑删除: 并不会真正的从数据库中将数据删除掉,而是将当前被删除的这条数据 中的一个逻辑删除字段置为删除状态.

tbl_user logic_flag = 1 → -1

  1. com.baomidou.mybatisplus.mapper.LogicSqlInjector

在这里插入图片描述

  1. logicDeleteValue 逻辑删除全局值

  2. logicNotDeleteValue 逻辑未删除全局值

在这里插入图片描述
4) 在 POJO 的逻辑删除字段 添加 @TableLogic 注解

在这里插入图片描述

  1. 会在 mp 自带查询和更新方法的 sql 后面,追加『逻辑删除字段』 = 『LogicNotDeleteValue 默认值』 删除方法: deleteById()和其他 delete 方法, 底层 SQL 调用的是 update tbl_xxx set 『逻辑删除字段』=『logicDeleteValue 默认值』
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值