MyBatisPlus中全局Sql注入器应用_逻辑删除使用

场景

项目搭建专栏:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194

MyBatisPlus中自定义全局操作流程:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89608052

什么是逻辑删除

假删除、逻辑删除,并不会真正的从数据库中将数据删除掉,而是将当前被删除的

这条数据的一个逻辑字段置为删除状态。

实现

全局配置注入LogicSqlInjector

打开项目的applicationContext.xml

<!-- 配置逻辑删除 -->
<bean id="logicSqlInjector" class="com.baomidou.mybatisplus.mapper.LogicSqlInjector"></bean>

然后在全局策略配置中注入

<!-- 定义MybatisPlus的全局策略配置-->
 <bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
  <!-- 在2.3版本以后,dbColumnUnderline 默认值就是true 开启下划线到驼峰命名支持-->
  <property name="dbColumnUnderline" value="true"></property>
  
  <!-- 全局的主键策略   全局使用主键自增的方式  value为 0-->
  <property name="idType" value="0"></property>
  
  <!-- 全局的表前缀策略配置 -->
  <!-- <property name="tablePrefix" value="tbl_"></property> -->
  
  <!-- 注入自定义全局操作 -->
  <!-- <property name="sqlInjector" ref="mySqlInjector"></property> -->
  
  <!-- 注入逻辑删除-->
  <property name="sqlInjector" ref="logicSqlInjector" />
  
  <!-- 注入逻辑删除全局值-->
  <property name="logicDeleteValue" value="1" />
     <property name="logicNotDeleteValue" value="0" />
  
 </bean>

注:

logicDeleteValue  // 逻辑删除全局值
logicNotDeleteValue // 逻辑未删除全局值

 

添加logic字段

数据库中添加logic字段

对应实体类添加字段

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

添加注解@TableLogic并生成get和set方法。

完整实体类

package com.badao.beans;

import java.io.Serializable;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.annotations.Version;
import com.baomidou.mybatisplus.enums.IdType;
import com.mchange.util.FailSuppressedMessageLogger;

@TableName(value="employee")
public class Employee  extends Model<Model>{
 
 @TableId(value="id",type=IdType.AUTO)
 private Integer id;
 //@TableField(value="last_name")
 private String name;
 private String email;
 private Integer gender;
 private Integer age;
 @TableField(exist=false)
 private String remark;
 @Version
    private Integer version;
 @TableLogic
 private Integer logicFlag;//逻辑删除
 public Integer getVersion() {
  return version;
 }
 public Integer getLogicFlag() {
  return logicFlag;
 }
 public void setLogicFlag(Integer logicFlag) {
  this.logicFlag = logicFlag;
 }
 public void setVersion(Integer version) {
  this.version = version;
 }
 public String getRemark() {
  return remark;
 }
 public void setRemark(String remark) {
  this.remark = remark;
 }
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }
 public Integer getGender() {
  return gender;
 }
 public void setGender(Integer gender) {
  this.gender = gender;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 
 /***
  * 必须指定当前实体类的主键属性
  */
 @Override
 protected Serializable pkVal() {
  // TODO Auto-generated method stub
  return id;
 }
 
}

测试

编写测试方法

/***
  *  逻辑删除
  */
 @Test
 public void testlogicdelete() {
  
   int result = employeeMapper.deleteById(24);
   System.out.println("***********"+result);
  
 }

效果

会在mp自带查询和更新方法的sql后面,追加『逻辑删除字段』=『LogicNotDeleteValue默认值』 删除方法: deleteById()和其他delete方法, 底层SQL调用的是update tbl_xxx set 『逻辑删除字段』=『logicDeleteValue默认值』

此时再查看数据库,逻辑删除字段已经变为1。

此时修改测试方法查询id为24的实体类。

/***
  *  逻辑删除
  */
 @Test
 public void testlogicdelete() {
  
   /*int result = employeeMapper.deleteById(24);
   System.out.println("***********"+result);*/
   Employee employee =employeeMapper.selectById(24);
   System.out.println(employee);
  
 }

已经查询不到了。

源码下载

https://download.csdn.net/download/badao_liumang_qizhi/11148612

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值