MybaitsPlus修改操作 樂觀鎖與自動填充

2021-10-22 20:52:45 字數 2411 閱讀 1673

這裡mp作了優化,需要改什麼值你就set什麼值,不改的值不需要管。

//修改操作

@test

public

void

testupdate()

⚠️update時底層生成的sql自動是動態sql:update user set age=? where id=?專案中經常會遇到一些資料每次都使用相同的方式填充,例如一條記錄的建立時間,更新時間等。除了每次自己手動set外,還可以使用mybatis plus的自動填充功能完成這些欄位的賦值工作。

第一步:在實體上新增註解

@data

public

class

user

第二步:建立配置類實現metaobjecthandler介面及其中的方法。

@component

//別忘

public

class

mymetaobjecthandler

implements

metaobjecthandler

//使用mp執行更新操作時執行這個方法

@override

public

void

updatefill

(metaobject metaobject)

}

之後再執行相關操作就會自動將這兩個字段填充好。

什麼是元資料(meta data)?

描述資料的資料,例如使用者資料表中,使用者的id、年齡、姓名就是元資料。

樂觀鎖主要解決丟失更新問題,當要更新一條記錄的時候,希望這條記錄沒有被別人更新,也就是說實現執行緒安全的資料更新。

mysql讀寫問題回顧

讀問題不考慮事務隔離性,可能會產生讀問題。分為髒讀、不可重複讀、幻讀。

事務就好比作業系統中的原語,是乙個最小的原子操作,隔離性是指乙個事務的執行不能被其他事務干擾

寫問題

寫問題主要是指丟失更新問題,只有在併發的情況下才可能出現這種問題。多個人同時修改同一條記錄,最後提交的資料覆蓋了另乙個提交的資料。(同時寫)

有悲觀鎖和樂觀鎖兩種解決方法。

悲觀鎖(不推薦)

悲觀鎖即乙個使用者修改記錄時,其餘所有人都不准修改直到該使用者修改完畢。

樂觀鎖樂觀鎖通過引入版本號這個概念來解決丟失更新問題

mybatis中的樂觀鎖

mp提供了非常方便的樂觀鎖實現方法,具體實現步驟:

在資料庫中新增version字段

alter

table

`user

`add

column

`version`

int

實體類新增version欄位並註解

//樂觀鎖版本號

@version

@tablefield

(fill = fieldfill.insert)

private integer version;

//整數型別下version自動+1

元物件處理器介面新增versioninsert預設值

@override

public

void

insertfill

(metaobject metaobject)

在配置類中將樂觀鎖外掛程式註冊為bean

@enabletransactionmanagement

@configuration()

//啟動類中不用再寫

public

class

mybatisplusconfig

}

測試

//測試樂觀鎖:先查再改

@test

public

void

testoptimisticlocker()

MyBaits Plus入門學習筆記

lombook 入門基本使用 自定義sql mybatis分頁介紹 mp分頁外掛程式實現物理分頁 更新 update 刪除 delete activerecord模式 主鍵策略 mp配置 通用service mybatis劣勢 jpa優勢 框架結構 新增 create 排除非表字段的三種方式,就是儲...

Mybaits plus2公升級3實戰

2.模組化 mp 合理的分配各個包結構 3.重構注入方法,支援任意方法精簡注入模式 4.全域性配置下劃線轉換消滅注入 as 語句 7.新增 rest api 通過 controller 層 8.實體 string 型別字段預設使用 like 查詢 selectone 預設 limit 1 9.輔助支...

mongodb修改操作報錯

mongodb修改語法 db.test.update query,update,upsert,multi,writeconcern query 查詢引數,類似where子句 update 要更新的資料 upsert boolean,可選,為true時如果沒有該資料則新增,為false時不新增。預設f...