首页 > 数据库 >MyBatisPlus中全局Sql注入器应用_逻辑删除使用

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

时间:2023-03-24 18:02:12浏览次数:45  
标签:MyBatisPlus String 删除 void return Sql Integer 全局 public



什么是逻辑删除

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

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

实现

全局配置注入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字段

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

对应实体类添加字段

@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默认值』

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

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

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

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

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

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

已经查询不到了。


标签:MyBatisPlus,String,删除,void,return,Sql,Integer,全局,public
From: https://blog.51cto.com/BADAOLIUMANGQZ/6147630

相关文章