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字段
对应实体类添加字段
@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注入器应用_逻辑删除使用相关推荐
- MyBatis-Plus 乐观锁 防止超卖、逻辑删除、自动填充、Id自增
MyBatis-Plus 乐观锁 防止超卖.逻辑删除.自动填充 Day3 前面的简单的讲了一下mybatis-plus的使用 当然有很多不足 我写博客就是想促进大家一起学习 也想让这些内容更简单一些. ...
- 【MySQL 中 动态sql,游标_】
MySQL 中 动态sql,游标_SQLServer MySQL的技术博客_51CTO博客
- mybatisPlus 自定义sqlSessionFactory sql注入器失效 Invalid bound statement (not found): insertBatchSomeColumn
这是重写后的sqlsessionFactory @Bean("sqlSessionFactory")public SqlSessionFactory sqlSessionFacto ...
- python中引入sql的优点_引用sql-和引用sql相关的内容-阿里云开发者社区
bboss持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句 bboss持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句. 具体使用方法如下: <pro ...
- MyBatisPlus中开启了逻辑删除则更新逻辑字段不再管用
场景 MyBatisPlus中全局Sql注入器应用_逻辑删除使用MyBatisPlus中全局Sql注入器应用_逻辑删除使用: https://blog.csdn.net/BADAO_LIUMANG_Q ...
- spring boot项目自定义数据源,mybatisplus分页、逻辑删除无效解决方法
Spring Boot项目中数据源的配置可以通过两种方式实现: 1.application.yml或者application.properties配置 2.注入DataSource及SqlSessio ...
- mybatis-plus配置逻辑删除
在实际操作中,删除操作并不是真实的物理删除,而是逻辑删除,在数据库表中添加一列 deleted 字段表明数据是否被删除. entity 对象中在 deleted 字段添加 @TableLogic // ...
- mybatis 乐观锁_MybatisPlus新特性之逻辑删除、乐观锁、自动填充
MP特性 公共字段的自动填充功能 自动更新全局属性,比如创建的时间修改的时间,这样就不用每执行一次插入更新操作都带上一个set大大节省了很多效率,从而也避免为了因为时间格式的不统一问题. 为了输出日志 ...
- Wins服务器删除和逻辑删除记录
应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 ...
最新文章
- mysql5.6 mac10.11_Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)...
- 互联网1分钟 | 0117 IBM入驻上海张江人工智能岛;IoT业务将成为小米新支撑点
- js url传值中文乱码之解决之道
- web farm 讨论引出
- 剑指Offer - 面试题46. 把数字翻译成字符串(DP)
- concat函数显示小数点包括0
- jQuery中animate( )的方法及$(“body“).animate({‘scrollTop‘:top},500)不被Firefox支持问题的解决
- android真实项目教程(七)——梦醒边缘花落_by_CJJ
- luogu_P3345[zjoi2015]幻想乡战略游戏
- 时分多路数字电话基带传输系统
- 我的创作纪念日——文章汇总
- 提高电脑速度的超多方法。
- 全球霸榜的Dell EMC VxRail,靠什么赢得超融合客户认可?
- 收集的英语资源(不断更新)
- 第十三届蓝桥杯省赛 JAVA A组 - 蜂巢
- 四、Node.js - 数据库与身份认证
- 2013年中华医院信息网络大会(郑州会议)资料汇总
- 条码软件里如何调整二维码的角度
- 计算机科学大师唐纳德,现代计算机科学的鼻祖,编程界的上帝,视全世界的码农当作艺术家...
- 【MATLAB】数学建模入门方法综述
热门文章
- java jdbc脚本_关于java:使用MySQL和JDBC运行.sql脚本
- type python3_详解Python3中的Sequence type的使用
- Netty介绍 与第一个Netty实例
- python滑动验证码处理_python+selenium滑动式验证码解决办法
- opencv 人脸识别_Python学习:基于Opencv来快速实现人脸识别(完整版)
- java方法中 thread,Java中的線程Thread方法之---join()
- 中呜机器人编程视频教程_清华北大泄露Python436集视频教程,这就是你现在需要的...
- python shell怎么调字体_Python3设置在shell脚本中自动补全功能的方法
- git bash here创建项目无法选择m_你应该知道的10个Git命令
- c语言中size of 用法,C语言中sizeof()的用法