MyBatis關(guān)閉一級緩存的兩種方式(分注解和xml兩種方式)
問題:為什么有緩存
mybatis默認(rèn)開啟一級緩存
什么場景下必須需要關(guān)閉一級緩存
場景:執(zhí)行2次相同sql,但是第一次查詢sql結(jié)果會加工處理,比如解析銘文,或者反編譯加密解密用戶名/密碼字符串等等,如果不關(guān)閉一級緩存,等第二次再查詢相同sql時不會去數(shù)據(jù)庫表重新查詢,而是直接使用緩存,從而導(dǎo)致后面拿到的不是原始數(shù)據(jù)而處理出錯
關(guān)閉一級緩存方法(針對使用MyBatis場景)
第一種:xml形式(關(guān)閉所有一級緩存)
<settings> <setting name="cacheEnabled" value="false"/> </settings>
第二種:注解形式(可指定僅僅某個Mapper關(guān)閉注解)
@Options(flushCache = Options.FlushCachePolicy.TRUE)
@Select("select * from ge_jdbc_datasource where id = #{id,jdbcType=BIGINT} and status = 1")
@ResultMap("resultMap")
JdbcDataSource find(Long id);第三種:sql動態(tài)拼接傳入的隨機(jī)數(shù)
比如sql傳參random()數(shù)值 或者 sql傳入當(dāng)前時間毫秒數(shù),切記一定要從方法形參傳過去而不要在sql中拼寫,否則無效
舉例說明:下面方式無效
select id from ge_jdbc_datasource where id = 1 and STATUS = 1 AND NOW()=NOW()
到此這篇關(guān)于MyBatis關(guān)閉一級緩存的兩種方式(分注解和xml兩種方式)的文章就介紹到這了,更多相關(guān)MyBatis關(guān)閉一級緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中 this和super的用法與區(qū)別小結(jié)
在Java的學(xué)習(xí)與開發(fā)者我們經(jīng)常遇到this和super關(guān)鍵字,本文主要介紹了Java中 this和super的用法與區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下2023-12-12
從零開始搭建springboot+springcloud+mybatis本地項目全過程(圖解)
這篇文章主要介紹了從零開始搭建springboot+springcloud+mybatis本地項目全過程(圖解),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
mybatisplus如何在xml的連表查詢中使用queryWrapper
這篇文章主要介紹了mybatisplus如何在xml的連表查詢中使用queryWrapper,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Mybatis-Plus中的MetaObjectHandler組件的使用
MetaObjectHandler是Mybatis-Plus中一個實用組件,專門用于自動處理實體對象中的特定字段,如創(chuàng)建時間、更新時間、創(chuàng)建人和修改人等,該接口允許開發(fā)者在不修改業(yè)務(wù)代碼的情況下,實現(xiàn)自動填充功能,極大地簡化了代碼的復(fù)雜性,感興趣的可以了解一下2024-10-10

