本篇介绍easymybatis如配置乐观锁和逻辑删除。

乐观锁

easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现。即:数据库增加一个int或long类型字段version,然后实体类version字段上加上@Version注解即可。实现原理是根据mysql的行锁机制(InnoDB下),同一条记录只能被一条SQL执行,后面的SQL排队等待。这样version改变后,等待中的SQL还是老的version号,因此更新失败。

@Version
private Long version;  
  • 注:更新不成功不会抛出异常,而是update返回值为0

逻辑删除

从1.7版本开始支持逻辑删除功能,即更新一个字段标记为已删除。查询的时候会自动过滤掉已删除的数据。

假设数据库表中有一个字段is_deleted类型为tinyint,0表示未删除,1表示已删除。

实体类对应代码如下:

public class User {@LogicDelete private Byte isDeleted; }

在执行dao.del(user);时会触发UPDATE语句,将is_deleted字段更新为1。

如果is_deleted类型为char(1),f表示未删除,t表示已删除。

@LogicDelete(notDeleteValue = "f", deleteValue = "t")
private String isDeleted;

@LogicDelete提供两个属性

  • notDeleteValue:指定未删除时的值,不指定默认为0
  • deleteValue:指定删除后保存的值,不指定默认为1

假设1表示未删除,2表示已删除,@LogicDelete的设置方法如下:@LogicDelete(notDeleteValue = “1”, deleteValue = “2”)。如果每个实体类都要这样设置的话会很麻烦,easymybatis提供了全局配置

  • springboot下,application.properties添加
# 未删除数据库保存的值,默认为0
mybatis.logic-not-delete-value=1 # 删除后数据库保存的值,默认为1 mybatis.logic-delete-value=2
  • springmvc设置方式如下:
<!-- 替换org.mybatis.spring.SqlSessionFactoryBean --><bean id="sqlSessionFactory" class="net.oschina.durcframework.easymybatis.ext.SqlSessionFactoryBeanExt"> <property name="dataSource" ref="dataSource" /> <property name="configLocation"> <value>classpath:mybatis/mybatisConfig.xml</value> </property> <property name="mapperLocations"> <list> <value>classpath:mybatis/mapper/*.xml</value> </list> </property> <!-- 以下是附加属性 --> <!-- dao所在的包名,跟MapperScannerConfigurer的basePackage一致 多个用;隔开 --> <property name="basePackage" value="com.myapp.dao" /> <property name="config"> <bean class="net.oschina.durcframework.easymybatis.EasymybatisConfig"> <property name="logicNotDeleteValue" value="1"/> <property name="logicDeleteValue" value="2"/> </bean> </property> </bean>
  • 注:如果同时设置了@LogicDelete参数和全局配置,会优先读取注解中的配置。

转载于:https://www.cnblogs.com/itrena/p/9089395.html

mybatis 乐观锁和逻辑删除相关推荐

  1. mybatis 乐观锁实现

    mybatis 乐观锁   加一个注解就行  @Version @Version @Target({ElementType.FIELD, ElementType.METHOD}) @Retention ...

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

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

  3. SpringBoot Mybatis 乐观锁和悲观锁

    这里写目录标题 1 悲观锁和乐观锁的原理 2 悲观锁和乐观锁的应用场景 3 悲观锁和乐观锁的总结 4 乐观锁 5 悲观锁 6 使用 Spring Retry 框架 6.1 添加依赖 6.2 启动类增加 ...

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

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

  5. mysql 悲观锁 共享锁_MySQL 乐观锁 悲观锁 共享锁 排他锁

    乐观锁 乐观锁是逻辑概念上的锁,不是数据库自带的,需要我们自己去实现.乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁 ...

  6. 浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除

    浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除 MyBatis-Plus官方文档连接 什么是MyBatis-Plus 请点击上面官方文档查看 代码演示:代码注释为功能详细解释 数 ...

  7. ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...

    目录 一.insert 1.插入操作 2.主键策略 二.update 1.根据Id更新操作 2.自动填充 3.乐观锁 三.select 1.根据id查询记录 2.通过多个id批量查询 3.简单的条件查 ...

  8. springboot整合MybatisPlus【三】逻辑删除、乐观锁

     1.在 application.properties 中添加一个配置(如果删除为1,不删除为0,这一步就可以不用配置) #该配置表示删除时为1,不删除时为0 #也可以不配置这两行,因为默认就是删除为 ...

  9. mybatis-plus 初始化项目 主键自增策略 自动填充 逻辑删除 乐观锁 复杂查询 分页查询

    一创建数据库(添加数据) 二 创建springboot工程 导入工程所需要的依赖(mybatis-plus,mysql-connector-java,lombok) <dependency> ...

最新文章

  1. jQuery源码学习视频
  2. C# MD5摘要算法、哈希算法
  3. 超级计算机和人比,和超级计算机相比,人类的大脑很弱吗
  4. 设计数据密集型应用程序_设计数据密集型应用程序书评
  5. Spring+Spring Security+JSTL实现的表单登陆的例子
  6. centos web 访问mysql_Centos7安装Web服务器--Mysql5.7.12安装
  7. OpenCV示例学习(二): 基本图形绘制算子:line(),circle(),fillPoly(), ellipse()
  8. 用Python代码实现五子棋游戏
  9. php项目怎么分配,php项目目录的合理划分和Pipeline 组件的使用场景
  10. Windows下tomcat进程监控批处理程序
  11. 为文本添加风格text-decoration
  12. 二阶齐次线性微分方程的通解公式_高数大结局二阶常系数非线性齐次方程
  13. 理解最小生成树与权值最小边无关
  14. MFC动态菜单全攻略
  15. POJ 1458 Common Subsequence
  16. node查询数据库 服务器报错_MySql数据库在NodeJS中简单的基本操作
  17. python 命名风格_python 代码风格------------PEP8规则
  18. 数字电子技术基础 目录
  19. IEEE 1588-PTP简介
  20. 别人笑我太疯癫 唐伯虎诗词集

热门文章

  1. AJAX, callback,promise and generator
  2. 中间的数(若已经排好序)
  3. PHP 小数点保留两位【转】
  4. python(1) - 数据类型和变量
  5. 解决解决鼠标右键被锁定
  6. 理解一个类里边设置两个同名函数
  7. GitHub入门:如何上传与下载工程?
  8. 《独家记忆》见面会高甜宠粉 张超现场解锁隐藏技能
  9. 混合模型和EM---混合高斯
  10. jq挑战30天——打字机效果+小程序