Day36——MyBatis二级缓存的使用

一. 知识储备

mybatis-config.xml

  <!-- 开启二级缓存的使用 -->
         <setting name="cacheEnabled" value="true"/>

EmployeeMapperCache.java

package com.atguigu.mybatis.dao;

import com.atguigu.mybatis.beans.Employee;

public interface EmployeeMapperCache {

	public Employee selectEmployeeById(Integer id);
	
}

EmployeeMapperCache.xml

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

<mapper namespace="com.atguigu.mybatis.dao.EmployeeMapperCache">
	  
	  <!-- 配置使用二级缓存 -->
	  <cache></cache>
	  
	  <!-- public Employee selectEmployeeById(Integer id); -->
	  <select id="selectEmployeeById" resultType="com.atguigu.mybatis.beans.Employee">
	      select id, last_name, email, gender from tbl_employee where id = #{id}
	  </select>
	  
	
</mapper>

TestMyBatisCache.java

/**
	 * 二级缓存(全局缓存): 
	 *     1. 二级缓存是需要配置来使用的。
	 *          cacheEnabled=true
	 *     2.二级缓存是一个namespace级别的缓存,可以让多个SqlSession共享同一个二级缓存
	 *     3.二级缓存的使用:
	 *           在要使用二级缓存的映射文件中,加入<cache>标签
	 *           POJO类需要实现序列化接口
	 *     4.二级缓存的工作机制:
	 *           基于同一个namespace的多个SqlSession:
	 *           一个SqlSession查询了一条数据,这条数据会存放到当前SqlSession对象的一级缓存中。
	 *           当前的SqlSession进行提交或关闭操作,才会把一级缓存中的数据存放到二级缓存中。
	 *           其他的SqlSession再进行查询时,就可以从二级缓存中获取数据。
	 * 
	 */
	@Test
	public void testSecondLevelCache() throws Exception{
		 SqlSessionFactory ssf = getSqlSessionFactory();
		 SqlSession session = ssf.openSession();
		 SqlSession session1 = ssf.openSession();
		 
		 try {
			 EmployeeMapperCache mapper = session.getMapper(EmployeeMapperCache.class);
			 EmployeeMapperCache mapper1 = session1.getMapper(EmployeeMapperCache.class);
			 
            Employee employee1 = mapper.selectEmployeeById(1001);
            System.out.println("employee1:" + employee1);
			 
            System.out.println("------------------------------------------");
            session.commit();
            
            Employee employee2 = mapper1.selectEmployeeById(1001);
            System.out.println("employee2:" + employee2);
            
			 
		} finally {
			// TODO: handle finally clause
			session.close();
			session1.close();
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值