Day34——MyBatis一级缓存的使用

一. 例子

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">
	  
	  <!-- 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

package com.atguigu.mybatis.test;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.atguigu.mybatis.beans.Employee;
import com.atguigu.mybatis.dao.EmployeeMapperCache;
import com.atguigu.mybatis.dao.EmployeeMapperDynamicSQL;

public class TestMyBatisCache {

    /**
     * 一级缓存(本地缓存):
     *    1. 一级缓存默认是开启的
     *    2. 一级缓存是SqlSession级别的缓存。每一个SqlSession对象都有自己的一级缓存
     *    3. 一级缓存的工作机制:
     *         一个SqlSession对象第一次查数据,会从数据库中把对应的数据查询到,
     *         并且会将查询到的数据保存到当前SqlSession对象的一级缓存中。再使用
     *         当前的SqlSession对象进行后续的查询相同的数据,都可以从一级缓存中获取到对应
     *         的数据。
     *    4. 实际上一级缓存就是一个Map。key:hashCode+查询的SqlId+编写的sql查询语句+参数
     * 	
     */
	@Test
	public void testFirstLevelCache() throws Exception{
		 SqlSessionFactory ssf = getSqlSessionFactory();
		 SqlSession session = ssf.openSession();
		 
		 try {
			 EmployeeMapperCache mapper = session.getMapper(EmployeeMapperCache.class);
			 
             Employee employee1 = mapper.selectEmployeeById(1001);
             System.out.println("employee1:" + employee1);
			 
             System.out.println("------------------------------------------");
             
             Employee employee2 = mapper.selectEmployeeById(1001);
             System.out.println("employee2:" + employee2);
             
             session.commit();
			 
		} finally {
			// TODO: handle finally clause
			session.close();
		}
	}
	
	
	
	public SqlSessionFactory getSqlSessionFactory() throws Exception {
		String resource = "mybatis-config.xml"; 
		InputStream inputStream = 
				Resources.getResourceAsStream(resource); 
		SqlSessionFactory sqlSessionFactory = 
				new SqlSessionFactoryBuilder().build(inputStream);
		return sqlSessionFactory;
	}
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值