mybatis 乐观锁和逻辑删除
本篇介紹easymybatis如配置樂觀鎖和邏輯刪除。
樂觀鎖
easymybatis提供的樂觀鎖使用方式跟JPA一樣,使用@Version注解來實現。即:數據庫增加一個int或long類型字段version,然后實體類version字段上加上@Version注解即可。實現原理是根據mysql的行鎖機制(InnoDB下),同一條記錄只能被一條SQL執行,后面的SQL排隊等待。這樣version改變后,等待中的SQL還是老的version號,因此更新失敗。
@Version private Long version;- 注:更新不成功不會拋出異常,而是update返回值為0
邏輯刪除
從1.7版本開始支持邏輯刪除功能,即更新一個字段標記為已刪除。查詢的時候會自動過濾掉已刪除的數據。
假設數據庫表中有一個字段is_deleted類型為tinyint,0表示未刪除,1表示已刪除。
實體類對應代碼如下:
public class User {@LogicDelete private Byte isDeleted; }在執行dao.del(user);時會觸發UPDATE語句,將is_deleted字段更新為1。
如果is_deleted類型為char(1),f表示未刪除,t表示已刪除。
@LogicDelete(notDeleteValue = "f", deleteValue = "t") private String isDeleted;@LogicDelete提供兩個屬性
- notDeleteValue:指定未刪除時的值,不指定默認為0
- deleteValue:指定刪除后保存的值,不指定默認為1
假設1表示未刪除,2表示已刪除,@LogicDelete的設置方法如下:@LogicDelete(notDeleteValue = “1”, deleteValue = “2”)。如果每個實體類都要這樣設置的話會很麻煩,easymybatis提供了全局配置
- springboot下,application.properties添加
- springmvc設置方式如下:
?
- 注:如果同時設置了@LogicDelete參數和全局配置,會優先讀取注解中的配置。
轉載于:https://www.cnblogs.com/itrena/p/9089395.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mybatis 乐观锁和逻辑删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: layer弹出层
- 下一篇: JqGrid 列时间格式化