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

mybatis二級緩存的實現(xiàn)代碼

 更新時間:2017年10月08日 14:35:46   作者:Pororo  
這篇文章主要為大家詳細(xì)介紹了mybatis二級緩存的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

二級緩存需要手動的配置和開啟,具體如下

在總的配置件中設(shè)置開啟二級緩存
/Mybatis02/config/mybatis-conf.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

<!-- 新增settings標(biāo)簽-->
 <settings>
    <!-- 開啟二級緩存 -->
   <settring name="cacheEnabled" value="true"/>
 
 </settings>

 <environments default="development">
  <environment id="development">
   <transactionManager type="JDBC"/>
   <dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/hkgoods"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
   </dataSource>
  </environment>
 </environments>
 <mappers>
  <mapper resource="mappers/GoodsInfoMapper.xml"/>
  <mapper resource="mappers/NationMapper.xml"/>
 </mappers>
</configuration>

光開這個還沒用,還需要在每個映射XML文件里 開啟這樣個標(biāo)簽

/Mybatis02/config/mappers/GoodsInfoMapper.xml

沒完,還有第三步。要讓我們的實體類,(也就是JaveBean)實現(xiàn)一個系列化接口

總結(jié)

2.1在總的配置件中設(shè)置開啟二級緩存

/Mybatis02/config/mappers/GoodsInfoMapper.xml

<!-- 想要當(dāng)前查詢支持二級緩存 需要在標(biāo)簽 加入 useCache="true-->
 <select id="selAll" resultType="com.chen.GoodsInfo" useCache="true">
  select ID e_id,name e_name,image e_image from goods 
 </select>

/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表示自動提交。否則需要使用commit方法才會提交。默認(rèn)是false
    SqlSession session = sqlSessionFactory.openSession();
    
    //拿到接口的代理對象
    GoodsDao2 dao=session.getMapper(GoodsDao2.class);
    //拿到了dao這個對象接下來就可以創(chuàng)建sql語句了;(直接調(diào)用接口方法)
    long s1 = System.currentTimeMillis();
    List list = dao.selAll();
    System.out.println(list);
    long e1 =System.currentTimeMillis();
    System.out.println("第一次查詢時間:"+(e1-s1));
    
    //再做一次重復(fù)查詢,測試下執(zhí)行時間
    SqlSession session2 = sqlSessionFactory.openSession(); 
    //拿到接口的代理對象
    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("第一次查詢時間:"+(e2-s2));
  
    //如果上面不設(shè)置自動提交表單,那么就需要commit方法
    session.commit();
  }

}

 點(diǎn)擊運(yùn)行

第二次,并沒有從緩存中取數(shù)據(jù),而是又重新發(fā)出了一條SQL語句查詢。那么這是什么問題?

在新的SqlSession對象,使用二級緩存中的數(shù)據(jù)的時候,需要先將前面的SqlSession對象關(guān)閉,數(shù)據(jù)才會進(jìn)入二級緩存

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表示自動提交。否則需要使用commit方法才會提交。默認(rèn)是false
    SqlSession session = sqlSessionFactory.openSession();
    
    //拿到接口的代理對象
    GoodsDao2 dao=session.getMapper(GoodsDao2.class);
    //拿到了dao這個對象接下來就可以創(chuàng)建sql語句了;(直接調(diào)用接口方法)
    long s1 = System.currentTimeMillis();
    List list = dao.selAll();
    System.out.println(list);
    long e1 =System.currentTimeMillis();
    System.out.println("第一次查詢時間:"+(e1-s1));
    
    
    //在新的SqlSession對象,使用二級緩存中的數(shù)據(jù)的時候,需要先將前面的SqlSession對象關(guān)閉,數(shù)據(jù)才會進(jìn)入二級緩存
    session.close();
    //再做一次重復(fù)查詢,測試下執(zhí)行時間
    SqlSession session2 = sqlSessionFactory.openSession(); 
    //拿到接口的代理對象
    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("第一次查詢時間:"+(e2-s2));
    
\
    //如果上面不設(shè)置自動提交表單,那么就需要commit方法
    session.commit();
  }

}

點(diǎn)擊運(yùn)行

這個才是二級緩存。第一次的已經(jīng)close掉了 。第二次它讀取了二級緩存中的數(shù)據(jù),并沒有自己再重新發(fā)新的SQL語句。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring中bean對象的裝配方式、作用域及生命周期詳解

    Spring中bean對象的裝配方式、作用域及生命周期詳解

    這篇文章主要介紹了Spring中bean對象的裝配方式、作用域及生命周期詳解,SprignBoot中?@Bean?完美的替換了了上面的這種在xml中配置的方法,使用以下方法就能讓spring在需要自動創(chuàng)建Info對象時,自動調(diào)用這個方法,需要的朋友可以參考下
    2023-11-11
  • Java Chassis3過載狀態(tài)下的快速失敗解決分析

    Java Chassis3過載狀態(tài)下的快速失敗解決分析

    本文解密了Java Chassis 3快速失敗相關(guān)的機(jī)制和背后故事,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Spring MVC返回的json去除根節(jié)點(diǎn)名稱的方法

    Spring MVC返回的json去除根節(jié)點(diǎn)名稱的方法

    這篇文章主要介紹了Spring MVC返回的json去除根節(jié)點(diǎn)名稱的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • 詳解SpringBoot整合MyBatis詳細(xì)教程

    詳解SpringBoot整合MyBatis詳細(xì)教程

    這篇文章主要介紹了詳解SpringBoot整合MyBatis詳細(xì)教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Springboot前后端分離項目配置跨域?qū)崿F(xiàn)過程解析

    Springboot前后端分離項目配置跨域?qū)崿F(xiàn)過程解析

    這篇文章主要介紹了Springboot前后端分離項目配置跨域?qū)崿F(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • java中如何判斷JSONObject是否存在某個Key

    java中如何判斷JSONObject是否存在某個Key

    這篇文章主要介紹了java中如何判斷JSONObject是否存在某個Key,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 基于java構(gòu)造方法Vector遍歷元素源碼分析

    基于java構(gòu)造方法Vector遍歷元素源碼分析

    本篇文章是關(guān)于ava構(gòu)造方法Vector源碼分析系列文章,本文主要介紹了Vector遍歷元素的源碼分析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • Spring實戰(zhàn)之緩存使用key操作示例

    Spring實戰(zhàn)之緩存使用key操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之緩存使用key操作,結(jié)合實例形式分析了Spring緩存使用key具體配置、屬性、領(lǐng)域模型等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • Java工廠模式優(yōu)雅地創(chuàng)建對象以及提高代碼復(fù)用率和靈活性

    Java工廠模式優(yōu)雅地創(chuàng)建對象以及提高代碼復(fù)用率和靈活性

    Java工廠模式是一種創(chuàng)建型設(shè)計模式,通過定義一個工廠類來封裝對象的創(chuàng)建過程,將對象的創(chuàng)建和使用分離,提高代碼的可維護(hù)性和可擴(kuò)展性,同時可以實現(xiàn)更好的代碼復(fù)用和靈活性
    2023-05-05
  • java遠(yuǎn)程連接調(diào)用Rabbitmq的實例代碼

    java遠(yuǎn)程連接調(diào)用Rabbitmq的實例代碼

    本篇文章主要介紹了java遠(yuǎn)程連接調(diào)用Rabbitmq的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論