二級(jí)緩存需要手動(dòng)的配置和開啟,具體如下
站在用戶的角度思考問題,與客戶深入溝通,找到新源網(wǎng)站設(shè)計(jì)與新源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋新源地區(qū)。
在總的配置件中設(shè)置開啟二級(jí)緩存
/Mybatis02/config/mybatis-conf.xml
<?xml version="1.0" encoding="UTF-8" ?>
光開這個(gè)還沒用,還需要在每個(gè)映射XML文件里 開啟這樣個(gè)標(biāo)簽
/Mybatis02/config/mappers/GoodsInfoMapper.xml
沒完,還有第三步。要讓我們的實(shí)體類,(也就是JaveBean)實(shí)現(xiàn)一個(gè)系列化接口
總結(jié)
2.1在總的配置件中設(shè)置開啟二級(jí)緩存
/Mybatis02/config/mappers/GoodsInfoMapper.xml
/Mybatis02/src/test/Start2.java
public class Start2 { public static void main(String[] args) throws IOException { String resource = "mybatis-conf.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //創(chuàng)建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //true表示自動(dòng)提交。否則需要使用commit方法才會(huì)提交。默認(rèn)是false SqlSession session = sqlSessionFactory.openSession(); //拿到接口的代理對(duì)象 GoodsDao2 dao=session.getMapper(GoodsDao2.class); //拿到了dao這個(gè)對(duì)象接下來就可以創(chuàng)建sql語句了;(直接調(diào)用接口方法) long s1 = System.currentTimeMillis(); List list = dao.selAll(); System.out.println(list); long e1 =System.currentTimeMillis(); System.out.println("第一次查詢時(shí)間:"+(e1-s1)); //再做一次重復(fù)查詢,測(cè)試下執(zhí)行時(shí)間 SqlSession session2 = sqlSessionFactory.openSession(); //拿到接口的代理對(duì)象 GoodsDao2 dao2=session2.getMapper(GoodsDao2.class); long s2 = System.currentTimeMillis(); List list2 = dao2.selAll(); System.out.println(list2); long e2 =System.currentTimeMillis(); System.out.println("第一次查詢時(shí)間:"+(e2-s2)); //如果上面不設(shè)置自動(dòng)提交表單,那么就需要commit方法 session.commit(); } }
點(diǎn)擊運(yùn)行
第二次,并沒有從緩存中取數(shù)據(jù),而是又重新發(fā)出了一條SQL語句查詢。那么這是什么問題?
在新的SqlSession對(duì)象,使用二級(jí)緩存中的數(shù)據(jù)的時(shí)候,需要先將前面的SqlSession對(duì)象關(guān)閉,數(shù)據(jù)才會(huì)進(jìn)入二級(jí)緩存
public class Start2 { public static void main(String[] args) throws IOException { String resource = "mybatis-conf.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //創(chuàng)建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //true表示自動(dòng)提交。否則需要使用commit方法才會(huì)提交。默認(rèn)是false SqlSession session = sqlSessionFactory.openSession(); //拿到接口的代理對(duì)象 GoodsDao2 dao=session.getMapper(GoodsDao2.class); //拿到了dao這個(gè)對(duì)象接下來就可以創(chuàng)建sql語句了;(直接調(diào)用接口方法) long s1 = System.currentTimeMillis(); List list = dao.selAll(); System.out.println(list); long e1 =System.currentTimeMillis(); System.out.println("第一次查詢時(shí)間:"+(e1-s1)); //在新的SqlSession對(duì)象,使用二級(jí)緩存中的數(shù)據(jù)的時(shí)候,需要先將前面的SqlSession對(duì)象關(guān)閉,數(shù)據(jù)才會(huì)進(jìn)入二級(jí)緩存 session.close(); //再做一次重復(fù)查詢,測(cè)試下執(zhí)行時(shí)間 SqlSession session2 = sqlSessionFactory.openSession(); //拿到接口的代理對(duì)象 GoodsDao2 dao2=session2.getMapper(GoodsDao2.class); long s2 = System.currentTimeMillis(); List list2 = dao2.selAll(); System.out.println(list2); long e2 =System.currentTimeMillis(); System.out.println("第一次查詢時(shí)間:"+(e2-s2)); \ //如果上面不設(shè)置自動(dòng)提交表單,那么就需要commit方法 session.commit(); } }
點(diǎn)擊運(yùn)行
這個(gè)才是二級(jí)緩存。第一次的已經(jīng)close掉了 。第二次它讀取了二級(jí)緩存中的數(shù)據(jù),并沒有自己再重新發(fā)新的SQL語句。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。