第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

mybatis sqlsession 緩存 clearCache不起作用

mybatis sqlsession 緩存 clearCache不起作用

精慕HU 2019-03-01 10:29:43
使用mybatis完成數(shù)據(jù)更新,為防止并發(fā)造成數(shù)據(jù)出錯(cuò),采用樂觀鎖機(jī)制如下:(1)使用select某id的數(shù)據(jù),計(jì)算total再更新操作;(2)更新操作語句利用version實(shí)現(xiàn)樂觀鎖機(jī)制; update table set total = #{total,jdbcType=DECIMAL}, version = version + 1 where id = #{id,jdbcType=BIGINT} and version = #{version,jdbcType=INTEGER} (3)如果更新失敗,則重復(fù)(1)、(2)步驟,直至超過一定次數(shù)。 但因?yàn)閙ybatis有緩存機(jī)制,在(3)失敗是,重復(fù)執(zhí)行(1),查詢出的結(jié)果仍為舊數(shù)據(jù),而不是數(shù)據(jù)庫最新數(shù)據(jù),導(dǎo)致一直更新失敗。 在(1)之前執(zhí)行clearCache,不起作用 SqlSessionUtils.getSqlSession(sqlSessionFactory).clearCache(); 修改mybatis配置,不起作用 <setting name="cacheEnabled" value="false"/> <setting name="localCacheScope" value="STATEMENT"/> 不起作用。。。不起作用。。。不起作用。。。。。。已崩潰~~~求指教!
查看完整描述

2 回答

?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

后來發(fā)現(xiàn)是因?yàn)槭聞?wù)的原因。
當(dāng)update失敗后(失敗的原因一定是version不匹配),會重新查詢數(shù)據(jù)最新值,然后再次重試;
因?yàn)槭聞?wù)級別是repeatable-read,所以查詢出來的“最新”值依舊是原值,而不是真正的最新值;
所以需要修改事務(wù)級別為read-commited,問題解決。

查看完整回答
反對 回復(fù) 2019-03-01
?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

我認(rèn)為clearCache,應(yīng)該是清理所謂的一級緩存,是在執(zhí)行insert,update,delete方法后會主動執(zhí)行清理的.這個(gè)也是由MyBatis進(jìn)行自己維護(hù)的,我們一般是不需要過多關(guān)注.
是不是開啟了二級緩存,你可以看看你的Mapper文件中,是不是由<cache/>標(biāo)簽?如果有,刪除一下看看.

查看完整回答
反對 回復(fù) 2019-03-01
  • 2 回答
  • 0 關(guān)注
  • 1903 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號