场景

项目搭建专栏:

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字段

对应实体类添加字段

@TableLogicprivate 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;@Versionprivate Integer version;@TableLogicprivate 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;}/**** 必须指定当前实体类的主键属性*/@Overrideprotected Serializable pkVal() {// TODO Auto-generated method stubreturn id;}}

测试

编写测试方法

/****  逻辑删除*/@Testpublic 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的实体类。

/****  逻辑删除*/@Testpublic 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

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

  1. MyBatis-Plus 乐观锁 防止超卖、逻辑删除、自动填充、Id自增

    MyBatis-Plus 乐观锁 防止超卖.逻辑删除.自动填充 Day3 前面的简单的讲了一下mybatis-plus的使用 当然有很多不足 我写博客就是想促进大家一起学习 也想让这些内容更简单一些. ...

  2. 【MySQL 中 动态sql,游标_】

    MySQL 中   动态sql,游标_SQLServer MySQL的技术博客_51CTO博客

  3. mybatisPlus 自定义sqlSessionFactory sql注入器失效 Invalid bound statement (not found): insertBatchSomeColumn

    这是重写后的sqlsessionFactory @Bean("sqlSessionFactory")public SqlSessionFactory sqlSessionFacto ...

  4. python中引入sql的优点_引用sql-和引用sql相关的内容-阿里云开发者社区

    bboss持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句 bboss持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句. 具体使用方法如下: <pro ...

  5. MyBatisPlus中开启了逻辑删除则更新逻辑字段不再管用

    场景 MyBatisPlus中全局Sql注入器应用_逻辑删除使用MyBatisPlus中全局Sql注入器应用_逻辑删除使用: https://blog.csdn.net/BADAO_LIUMANG_Q ...

  6. spring boot项目自定义数据源,mybatisplus分页、逻辑删除无效解决方法

    Spring Boot项目中数据源的配置可以通过两种方式实现: 1.application.yml或者application.properties配置 2.注入DataSource及SqlSessio ...

  7. mybatis-plus配置逻辑删除

    在实际操作中,删除操作并不是真实的物理删除,而是逻辑删除,在数据库表中添加一列 deleted 字段表明数据是否被删除. entity 对象中在 deleted 字段添加 @TableLogic // ...

  8. mybatis 乐观锁_MybatisPlus新特性之逻辑删除、乐观锁、自动填充

    MP特性 公共字段的自动填充功能 自动更新全局属性,比如创建的时间修改的时间,这样就不用每执行一次插入更新操作都带上一个set大大节省了很多效率,从而也避免为了因为时间格式的不统一问题. 为了输出日志 ...

  9. Wins服务器删除和逻辑删除记录

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 ...

最新文章

  1. mysql5.6 mac10.11_Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)...
  2. 互联网1分钟 | 0117 IBM入驻上海张江人工智能岛;IoT业务将成为小米新支撑点
  3. js url传值中文乱码之解决之道
  4. web farm 讨论引出
  5. 剑指Offer - 面试题46. 把数字翻译成字符串(DP)
  6. concat函数显示小数点包括0
  7. jQuery中animate( )的方法及$(“body“).animate({‘scrollTop‘:top},500)不被Firefox支持问题的解决
  8. android真实项目教程(七)——梦醒边缘花落_by_CJJ
  9. luogu_P3345[zjoi2015]幻想乡战略游戏
  10. 时分多路数字电话基带传输系统
  11. 我的创作纪念日——文章汇总
  12. 提高电脑速度的超多方法。
  13. 全球霸榜的Dell EMC VxRail,靠什么赢得超融合客户认可?
  14. 收集的英语资源(不断更新)
  15. 第十三届蓝桥杯省赛 JAVA A组 - 蜂巢
  16. 四、Node.js - 数据库与身份认证
  17. 2013年中华医院信息网络大会(郑州会议)资料汇总
  18. 条码软件里如何调整二维码的角度
  19. 计算机科学大师唐纳德,现代计算机科学的鼻祖,编程界的上帝,视全世界的码农当作艺术家...
  20. 【MATLAB】数学建模入门方法综述

热门文章

  1. java jdbc脚本_关于java:使用MySQL和JDBC运行.sql脚本
  2. type python3_详解Python3中的Sequence type的使用
  3. Netty介绍 与第一个Netty实例
  4. python滑动验证码处理_python+selenium滑动式验证码解决办法
  5. opencv 人脸识别_Python学习:基于Opencv来快速实现人脸识别(完整版)
  6. java方法中 thread,Java中的線程Thread方法之---join()
  7. 中呜机器人编程视频教程_清华北大泄露Python436集视频教程,这就是你现在需要的...
  8. python shell怎么调字体_Python3设置在shell脚本中自动补全功能的方法
  9. git bash here创建项目无法选择m_你应该知道的10个Git命令
  10. c语言中size of 用法,C语言中sizeof()的用法