欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis plus的自動填充與樂觀鎖的實例詳解(springboot)

 更新時間:2020年11月11日 10:03:51   作者:一起碼代碼  
這篇文章主要介紹了Mybatis plus的自動填充與樂觀鎖的實例詳解(springboot),本文給大家介紹的非常詳細對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

自動填充

項目中經(jīng)常會遇到一些數(shù)據(jù),每次都使用相同的方式填充,如插入時間、更新時間。Mybatis-plus的自動填充功能可以幫助我們快速實現(xiàn)。

1.表中加入create_time,update_time字段

在這里插入圖片描述

2.實體類注解填充字段

@TableField(fill= FieldFill.INSERT)
  private Date createTime;

  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Date updateTime;

/**
* 默認不處理
/
DEFAULT,
/
*
* 插入填充字段
/
INSERT,
/
*
* 更新填充字段
/
UPDATE,
/
*
* 插入和更新填充字段
*/
INSERT_UPDATE

3.自定義實現(xiàn)類MyMetaObjectHandler

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

  /**
   *
   * 使用Mybatis-plus執(zhí)行insert操作這個方法執(zhí)行
   */
  @Override
  public void insertFill(MetaObject metaObject) {
      this.setFieldValByName("createTime",new Date(),metaObject);
      this.setFieldValByName("updateTime",new Date(),metaObject);
  }

  /**
   *
   * 使用Mybatis-plus執(zhí)行update操作這個方法執(zhí)行
   */
  @Override
  public void updateFill(MetaObject metaObject) {
    this.setFieldValByName("updateTime",new Date(),metaObject);
  }
}

setFieldValByName中有三個參數(shù),第一個是字段名,第二個是要填充的數(shù)據(jù),第三個參數(shù)寫成metaObject就可以。

測試插入:

在這里插入圖片描述
在這里插入圖片描述

測試修改:

在這里插入圖片描述

在這里插入圖片描述

發(fā)現(xiàn)插入數(shù)據(jù)的時候會自動將這兩個數(shù)據(jù)填充當前時間,更新的時候會只講更新時間更改為當前時間。

樂觀鎖

當項目中出現(xiàn)并發(fā)操作時,會出現(xiàn)丟失更新問題,即A與B都查詢到money字段為100,A修改money+900,改為1000。這時B也提交修改,money+50,改為150。A的修改就丟失了。
解決這種情況有兩種方法:悲觀鎖和樂觀鎖,悲觀鎖就是只能一個一個操作,A操作的時候B只能等著,等A提交完成了B才能查詢。
Mybatis-plus自帶樂觀鎖:創(chuàng)建一個version字段,當A與B可以同時操作,當A提交的時候會看當前版本號與查詢時候的版本號是否一致,一致才能提交成功,否則提交失敗,提交成功會把當前版本號+1。

1.數(shù)據(jù)庫中加入version字段,并在實體類中加入version屬性。

加上 @Version注解

 @Version
  private Integer version;

2.編寫配置類引入樂觀鎖插件

@Configuration
@MapperScan("com.zyw.mpdemo.mapper")
public class MpConfig {
  
  @Bean
  public OptimisticLockerInterceptor optimisticLockerInterceptor() {
    return new OptimisticLockerInterceptor();
  }

}

3.編寫測試

用兩個對象查詢同一個id,做不同的修改,然后依次提交。

 @Override
  public void test(Account account) {
    Account account1 = accountMapper.selectById(1326188266440888321L);
    Account account2 = accountMapper.selectById(1326188266440888321L);
    account1.setMoney(account.getMoney());
    account2.setMoney(account.getMoney()+100);
    accountMapper.updateById(account1);
    accountMapper.updateById(account2);

  }

在這里插入圖片描述

在這里插入圖片描述

第一次成功,第二次提交失敗,因為第二次提交的時候的版本號與查詢到的不一致。

到此這篇關(guān)于Mybatis plus的自動填充與樂觀鎖(springboot)的文章就介紹到這了,更多相關(guān)Mybatis plus自動填充樂觀鎖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot解決跨域的超實用方案分享

    SpringBoot解決跨域的超實用方案分享

    這篇文章介紹了使用SpringBoot解決跨域問題的方法,并提供了詳細的代碼示例和解釋,適合對跨域問題不太熟悉的讀者,感興趣的小伙伴跟著小編一起來學習吧
    2023-05-05
  • Java實現(xiàn)幾種序列化方式總結(jié)

    Java實現(xiàn)幾種序列化方式總結(jié)

    本篇文章主要介紹了Java實現(xiàn)幾種序列化方式總結(jié),包括Java原生以流的方法進行的序列化、Json序列化、FastJson序列化、Protobuff序列化,有興趣的可以了解一下,
    2017-03-03
  • Spring之關(guān)于PropertyDescriptor的擴展剖析

    Spring之關(guān)于PropertyDescriptor的擴展剖析

    這篇文章主要介紹了Spring之關(guān)于PropertyDescriptor的擴展剖析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java實現(xiàn)一個達達租車系統(tǒng)的步驟詳解

    Java實現(xiàn)一個達達租車系統(tǒng)的步驟詳解

    這篇文章主要給大家介紹了利用Java實現(xiàn)一個達達租車系統(tǒng)的步驟,文中給出了詳細的實現(xiàn)思路和示例代碼,并在文末給出了完整的源碼供大家學習下載,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • SpringBoot注冊Filter的兩種實現(xiàn)方式

    SpringBoot注冊Filter的兩種實現(xiàn)方式

    這篇文章主要介紹了SpringBoot注冊Filter的兩種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java內(nèi)存泄漏問題的排查、優(yōu)化與最佳實踐

    Java內(nèi)存泄漏問題的排查、優(yōu)化與最佳實踐

    在?Java?開發(fā)中,內(nèi)存泄漏是一個常見且令人頭疼的問題,內(nèi)存泄漏指的是程序在運行過程中,已經(jīng)不再使用的對象沒有被及時釋放,從而導致內(nèi)存占用不斷增加,最終可能導致程序崩潰或性能顯著下降,本文給大家介紹了Java內(nèi)存泄漏排查、優(yōu)化與最佳實踐
    2025-01-01
  • Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實例

    Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實例

    這篇文章主要介紹了Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Kotlin基礎教程之dataclass,objectclass,use函數(shù),類擴展,socket

    Kotlin基礎教程之dataclass,objectclass,use函數(shù),類擴展,socket

    這篇文章主要介紹了Kotlin基礎教程之dataclass,objectclass,use函數(shù),類擴展,socket的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • SpringBoot開發(fā)中使用DTO層的方法示例

    SpringBoot開發(fā)中使用DTO層的方法示例

    DTO層是在應用程序的業(yè)務邏輯層和數(shù)據(jù)訪問層之間引入的一個中間層,用于在不同層之間傳輸數(shù)據(jù),本文主要介紹了SpringBoot開發(fā)中使用DTO層,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • java的Guava工具包介紹

    java的Guava工具包介紹

    Java開發(fā)的同學應該都使用或者聽說過Google提供的Guava工具包。日常使用最多的肯定是集合相關(guān)的工具類,還有Guava cache,除了這些之外Guava還提供了很多有用的功能,鑒于日常想用的時候找不到,這里就梳理一下Guava中那些好用的工具類,想優(yōu)化代碼的時候不妨過來看看
    2021-04-04

最新評論