悲观锁
悲观锁是认为在用户操作数据的时候一定会发生数据 所以把当前操作的数据全锁起来
实际上依靠的是数据库的锁机制
首先要关闭mysql的自动提交事务
实际上起作用的语句就是这两个其中的一个
当第一个查询到数据在的修改时 如果第二个 查询也要查询该数据 那么第二个就会进入阻塞状态 等待第一个提交事务
乐观锁
与悲观锁相反 每一次都认为没问题 那么就是所有人都能同时访问操作数据
但是就会有并发冲突 问题 那么怎么解决呢
引入版本号 在每次修改后 版本号都会自动递增
拿到数据的时候 同时拿到版本号
当我们操作完准备提交的时候 就会查询此时的版本号跟我们一开始拿到的版本号是否一致 一致才会提交
在mp里面如果需要使用乐观锁的步骤:
- 数据库的表必须添加version字段
- 添加乐观锁的拦截器
- 以后你执行update语句的时候记得实体类要设置当前version的值