Mysql在乐观锁层面解决并发问题

背景

假如一条数据同时只能被一个线程修改。这个时候应该怎么解决呢?

过程

  • 数据库中的数据 这里把status理解为version即可
    Mysql在乐观锁层面解决并发问题

  • mybatis做更新的时候,返回受影响的行数。默认是返回匹配的行数,匹配的行数不代表被更新了。没有被更新,则不是受影响的行数。
    连接url上添加如下参数:useAffectedRows=true,表示update的时候,返回受到影响的行数。

  • 测试方法1
    Mysql在乐观锁层面解决并发问题
    在if判断处,打上断点。

  • 测试方法2
    Mysql在乐观锁层面解决并发问题
    测试过程:先debug执行test1,然后直接执行完test2即可。

  • 测试结果

    数据库结果
    Mysql在乐观锁层面解决并发问题
    idea控制台打印
    Mysql在乐观锁层面解决并发问题

小结

  1. 记录mybatis做更新的时候,如何返回受到影响的行数。
  2. 记录mysql如何采用version的方式解决并发问题。其实就是乐观锁的用法。