1. 程式人生 > >在同一事務中,mybatis多次查詢返回相同結果解決方法

在同一事務中,mybatis多次查詢返回相同結果解決方法

一、問題描述:

使用spring @Transaction事務時,在for迴圈中需要多次執行同一查詢語句,第一次查詢出物件後,對物件進行修改後,結果再進行第二次查詢的時候,查詢返回的資料是自己第一次修改後的資料。因為業務需要每次查詢都需要取更改資料庫,以後的查詢都會根據上一次迴圈修改後的值進行操作。

二、解決方法:

(1)在xml檔案 select語句新增  flushCache="true"  ,告訴mybatis查詢結束後重新整理快取,不記錄查詢結果到一級快取中

<select id="pageListCount" resultType="int" flushCache="true">

(2)本來想找全域性配置的方法,但是在網上找到mybatis關閉快取的屬性,但是配置上都不起作用,只有第一種方法好用,這裡就不寫了

三、原因:

mybatis有一級快取和二級快取,mybatis對查詢的語句會存在一級快取中,如果在一個事務中,mybatis對同一個session多次查詢同一個sql語句就會去找快取而不是再去查一次資料庫