深入浅析Mybatis +中的乐观锁与自动填充

  介绍

本篇文章给大家分享的是有关深入浅析Mybatis +中的乐观锁与自动填充,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

项目中经常会遇到一些数据,每次都使用相同的方式填充,如插入时间,更新时间.Mybatis-plus的自动填充功能可以帮助我们快速实现。

1。表中加入create_time, update_time字段

深入浅析Mybatis +中的乐观锁与自动填充

2。实体类注解填充字段

 @TableField(填补=FieldFill.INSERT)
  私人createTime日期;
  
  @TableField(填补=FieldFill.INSERT_UPDATE)
  私人约会updateTime; 

/* *
*默认不处理
/
默认情况下,
/
* *插入填充字段
/
插入,
/
* *更新填充字段
/
更新
/
* *插入和更新填充字段
*/
INSERT_UPDATE

3。自定义实现类<代码> MyMetaObjectHandler

@ component   公共类MyMetaObjectHandler实现MetaObjectHandler {/* *   *   *使用Mybatis-plus执行插入操作这个方法执行   */@Override   公共空间insertFill (MetaObject MetaObject) {   this.setFieldValByName (“createTime"新的日期(),metaObject);   this.setFieldValByName (“updateTime"新的日期(),metaObject);   }/* *   *   *使用Mybatis-plus执行更新操作这个方法执行   */@Override   公共空间updateFill (MetaObject MetaObject) {   this.setFieldValByName (“updateTime"新的日期(),metaObject);   }   }

setFieldValByName中有三个参数,第一个是字段名,第二个是要填充的数据,第三个参数写成metaObject就可以。

测试插入:

深入浅析Mybatis +中的乐观锁与自动填充“> <br/> <img src=

测试修改:

深入浅析Mybatis +中的乐观锁与自动填充

深入浅析Mybatis +中的乐观锁与自动填充

发现插入数据的时候会自动将这两个数据填充当前时间,更新的时候会只讲更新时间更改为当前时间。

当项目中出现并发操作时,会出现丢失更新问题,即A与B都查询到钱字段为100,一个修改钱+ 900,改为1000。这时B也提交修改,钱+ 50,改为150.的修改就丢失了。
解决这种情况有两种方法:悲观锁和乐观锁,悲观锁就是只能一个一个操作,一个操作的时候B只能等着,等一个提交完成了B才能查询。
Mybatis-plus自带乐观锁:创建一个版本字段,当A与B可以同时操作,当一个提交的时候会看当前版本号与查询时候的版本号是否一致,一致才能提交成功,否则提交失败,提交成功会把当前版本号+ 1。

1。数据库中加入版本字段,并在实体类中加入版本属性。

加上<代码> @Version 注解

 @Version
  私人整数版本;

2。编写配置类引入乐观锁插件

@ configuration   @MapperScan (“com.zyw.mpdemo.mapper")   公开课MpConfig {      @ bean   公共OptimisticLockerInterceptor OptimisticLockerInterceptor () {   返回新OptimisticLockerInterceptor ();   }      }

3。编写测试

用两个对象查询同一个id,做不同的修改,然后依次提交。

 @Override
  公共空白测试(账户账户){
  账户account1=accountMapper.selectById l (1326188266440888321);
  账户account2=accountMapper.selectById l (1326188266440888321);
  account1.setMoney (account.getMoney ());
  account2.setMoney (account.getMoney () + 100);
  accountMapper.updateById (account1);
  accountMapper.updateById (account2);
  
  }

深入浅析Mybatis +中的乐观锁与自动填充

深入浅析Mybatis +中的乐观锁与自动填充

第一次成功,第二次提交失败,因为第二次提交的时候的版本号与查询到的不一致。

深入浅析Mybatis +中的乐观锁与自动填充