日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis 乐观锁和逻辑删除

發布時間:2023/11/29 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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添加
# 未刪除數據庫保存的值,默認為0 mybatis.logic-not-delete-value=1 # 刪除后數據庫保存的值,默認為1 mybatis.logic-delete-value=2
  • springmvc設置方式如下:
<!-- 替換org.mybatis.spring.SqlSessionFactoryBean --><bean id="sqlSessionFactory" class="net.oschina.durcframework.easymybatis.ext.SqlSessionFactoryBeanExt"> <property name="dataSource" ref="dataSource" /> <property name="configLocation"> <value>classpath:mybatis/mybatisConfig.xml</value> </property> <property name="mapperLocations"> <list> <value>classpath:mybatis/mapper/*.xml</value> </list> </property> <!-- 以下是附加屬性 --> <!-- dao所在的包名,跟MapperScannerConfigurer的basePackage一致 多個用;隔開 --> <property name="basePackage" value="com.myapp.dao" /> <property name="config"> <bean class="net.oschina.durcframework.easymybatis.EasymybatisConfig"> <property name="logicNotDeleteValue" value="1"/> <property name="logicDeleteValue" value="2"/> </bean> </property> </bean>

?

  • 注:如果同時設置了@LogicDelete參數和全局配置,會優先讀取注解中的配置。

轉載于:https://www.cnblogs.com/itrena/p/9089395.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mybatis 乐观锁和逻辑删除的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。