Mysql在乐观锁层面解决并发问题
背景
假如一条数据同时只能被一个线程修改。这个时候应该怎么解决呢?
过程
-
数据库中的数据 这里把status理解为version即可
-
mybatis做更新的时候,返回受影响的行数。默认是返回匹配的行数,匹配的行数不代表被更新了。没有被更新,则不是受影响的行数。
连接url上添加如下参数:useAffectedRows=true,表示update的时候,返回受到影响的行数。 -
测试方法1
在if判断处,打上断点。 -
测试方法2
测试过程:先debug执行test1,然后直接执行完test2即可。 -
测试结果
数据库结果
idea控制台打印
小结
- 记录mybatis做更新的时候,如何返回受到影响的行数。
- 记录mysql如何采用version的方式解决并发问题。其实就是乐观锁的用法。