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

mybatis 有時(shí)update語句執(zhí)行無效的解決方案

 更新時(shí)間:2021年11月26日 11:50:42   作者:藍(lán)兔子_  
這篇文章主要介紹了在項(xiàng)目里mybatis有時(shí)update語句執(zhí)行無效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

項(xiàng)目里mybatis有時(shí)update語句執(zhí)行無效

公司測試人員在測試的時(shí)候發(fā)現(xiàn),在積分系統(tǒng),消費(fèi)產(chǎn)生了積分,有時(shí)候,卻不能加到用戶累計(jì)積分上去。

明明積分流水記錄跟用戶積分的增加在一個(gè)事務(wù)當(dāng)中的。積分流水記錄生成成功,偏偏用戶積分沒有加上去?奇了怪了。

加積分的代碼是:

tMemberPointMapper.updateByPrimaryKeySelective(tMemberPoint);

然后在相應(yīng)的位置,加了日志,記錄更新語句前后的對比。

測試人員再次發(fā)現(xiàn)問題時(shí)查看了日志,日志顯示更新語句執(zhí)行后的對象確實(shí)是有累加過積分的。為什么數(shù)據(jù)庫表中的值就是沒變呢?

于是百度啊,這種情況百度的結(jié)果比較少,有的說是mybatis的版本的問題?個(gè)人感覺不太可能,因?yàn)檫@個(gè)mybatis版本在很多項(xiàng)目是使用,都沒出過問題。事務(wù)也是測試過,有異常能夠回滾。

后來冷靜下來想了想出現(xiàn)問題的時(shí)機(jī)。測試人員在消費(fèi)操作過后,會(huì)立刻點(diǎn)查看用戶積分的界面。這時(shí)會(huì)調(diào)獲取用戶積分信息的接口。因?yàn)檫@個(gè)接口,不僅僅是查詢,因?yàn)榈燃?jí)維持機(jī)制(過一定的周期,要扣掉一部分積分), 它在查詢前,對用戶積分有修改的操作。所在,查詢用戶積分的接口,也處在非只讀的事務(wù)中。

當(dāng)兩個(gè)對同條用戶積分記錄操作的事務(wù)同時(shí)執(zhí)務(wù)(InnoDb的行級(jí)鎖,排它鎖),由于,mysql的默認(rèn)隔離級(jí)別是repeatable-read,事務(wù)A和事務(wù)B,讀到數(shù)據(jù)為a,后事務(wù)B修改了數(shù)據(jù)為b,提交了,而事務(wù)A再執(zhí)行修改操作,又會(huì)把數(shù)據(jù)b修改為數(shù)據(jù)a。這就出現(xiàn)了,題中所述的,偶爾出現(xiàn)update語句執(zhí)行無效的假象。

解決辦法

悲觀鎖 在查詢語句后加 for update ,鎖住事務(wù)中,查詢用戶積分的語句。

 <select id="selectByExample" resultMap="BaseResultMap" parameterType="com.ice.pojo.f3.TMemberPointExample" >
    select
    <if test="distinct" >
      distinct
    </if>
    <include refid="Base_Column_List" />
    from t_member_point
    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
    for update
  </select>

執(zhí)行update語句后,數(shù)據(jù)沒有被更新,也沒有報(bào)錯(cuò)

記錄一下今天遇到的一個(gè)問題:

問題描述

執(zhí)行update語句后,數(shù)據(jù)沒有被更新,也沒有報(bào)錯(cuò)

詳細(xì)情況

通過傳參的方式,在控制臺(tái)打印出的sql語句;將sql語句拷貝到數(shù)據(jù)庫執(zhí)行也是OK

解決辦法

百思不得其解,到底問題出在了那里?

所以,試了很多方法,最后才發(fā)現(xiàn)某一個(gè)字段的問題;但是從控制臺(tái)打印的sql語句來看,參數(shù)值也是OK的?。?/p>

然后我嘗試將mapper中sql語句的參數(shù)寫成控制臺(tái)打印出來的參數(shù),直接確定下來,運(yùn)行,發(fā)現(xiàn)也是OK的,那么確定是這個(gè)參數(shù)問題了;

但是映射啥的都沒問題,所以問題就有可能在數(shù)據(jù)庫存的這個(gè)字段的長度問題了,最后發(fā)現(xiàn)數(shù)據(jù)庫該字段的長度長于傳的參數(shù)的值,而且在實(shí)體類中使用trim()對屬性值做了處理,所以問題就在這里,修改一下就好了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • idea代碼模板設(shè)置方式

    idea代碼模板設(shè)置方式

    這篇文章主要介紹了idea代碼模板設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java中Maven的打包方式和執(zhí)行jar詳解

    Java中Maven的打包方式和執(zhí)行jar詳解

    這篇文章主要介紹了Java中maven的打包方式和執(zhí)行jar,文中有詳細(xì)的代碼示例,有需要的朋友可以借鑒一下
    2023-04-04
  • 五種Java多線程同步的方法

    五種Java多線程同步的方法

    這篇文章主要為大家詳細(xì)介紹了五種Java多線程同步的方法,需要的朋友可以參考下
    2015-09-09
  • Java?MyBatis本地緩存原理詳解

    Java?MyBatis本地緩存原理詳解

    這篇文章主要介紹了Java?MyBatis本地緩存原理詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 基于SpringBoot+Redis的Session共享與單點(diǎn)登錄詳解

    基于SpringBoot+Redis的Session共享與單點(diǎn)登錄詳解

    這篇文章主要介紹了基于SpringBoot+Redis的Session共享與單點(diǎn)登錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • springboot 設(shè)置CorsFilter跨域不生效的解決

    springboot 設(shè)置CorsFilter跨域不生效的解決

    這篇文章主要介紹了springboot 設(shè)置CorsFilter跨域不生效的解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 如何將應(yīng)用的log4j替換成logback詳解

    如何將應(yīng)用的log4j替換成logback詳解

    無論從設(shè)計(jì)上還是實(shí)現(xiàn)上,Logback相對log4j而言有了相對多的改進(jìn)。所以下面這篇文章主要給大家介紹了關(guān)于如何將應(yīng)用的log4j換成logback的相關(guān)資料,文中介紹的很詳細(xì),需要的朋友可以參考下。
    2017-02-02
  • Java用鄰接矩陣存儲(chǔ)圖的示例代碼

    Java用鄰接矩陣存儲(chǔ)圖的示例代碼

    鄰接矩陣通常采用一個(gè)一維數(shù)組存儲(chǔ)圖中節(jié)點(diǎn)的信息,采用一個(gè)二維數(shù)組存儲(chǔ)圖中節(jié)點(diǎn)之間的鄰接關(guān)系。本文將利用Java實(shí)現(xiàn)用鄰接矩陣存儲(chǔ)圖,需要的可以參考一下
    2022-06-06
  • Java集合之CopyOnWriteArrayList詳解

    Java集合之CopyOnWriteArrayList詳解

    這篇文章主要介紹了Java集合之CopyOnWriteArrayList詳解,CopyOnWriteArrayList是ArrayList的線程安全版本,內(nèi)部也是通過數(shù)組實(shí)現(xiàn),每次對數(shù)組的修改都完全拷貝一份新的數(shù)組來修改,修改完了再替換掉老數(shù)組,這樣保證了只阻塞寫操作,需要的朋友可以參考下
    2023-12-12
  • 流式圖表拒絕增刪改查之框架搭建過程

    流式圖表拒絕增刪改查之框架搭建過程

    這篇文章主要為大家介紹了流式圖表拒絕增刪改查之框架搭建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評(píng)論