mybatis 缓存

一、mybatis的一级缓存

     mybatis默认打开一级缓存

实例:

CUser.java

package com.lx.bean;

import java.io.Serializable;

public class CUser implements Serializable{

	private int id;
	private String name;
	private int age;
	
	public CUser() {
	}
	public CUser(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

数据表:

CREATE TABLE c_user(
	id INT PRIMARY KEY AUTO_INCREMENT, 
	NAME VARCHAR(20), 
	age INT
);
INSERT INTO c_user(NAME, age) VALUES('Tom', 12);
INSERT INTO c_user(NAME, age) VALUES('Jack', 11);

userMapper.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.lx.test8.userMapper"> 
   <!-- 二级缓存 -->
    <cache></cache>     
   
    <select id="getUser" parameterType="int" resultType="CUser">
		select * from c_user where id=#{id}
	</select>

	<update id="updateUser" parameterType="CUser">
		update c_user set
		name=#{name}, age=#{age} where id=#{id}
	</update>
      
	</mapper>

测试类:

package com.lx.test8;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;

import com.lx.bean.CUser;
import com.lx.utils.FactoryUtil;

public class Test8 {

	/**
	 * 一级缓存
	 *   清除缓存的方法
	 *    1.session.clearCache();
	 *    2.增删改查操作
	 *    3.重新开启一个session
	 * 二级缓存
	 *   <cache></cache>   
	 */
	@Test
	public void testCaheOne()
	{
		SqlSessionFactory factory = FactoryUtil.getFactory();
		
		SqlSession session = factory.openSession();
	
		String statement = "com.lx.test8.userMapper.getUser";
		
		CUser user = session.selectOne(statement, 1);
		System.out.println(user);
		System.out.println("=================");
		
		//1、session.clearCache();
		
		//2.CRUD操作
		/*statement = "com.lx.test8.userMapper.updateUser";
		session.update(statement, new CUser(1,"Tom",20));
		session.commit();
		
		statement = "com.lx.test8.userMapper.getUser";*/
		
		session.close();
		session = factory.openSession();
		
		user = session.selectOne(statement, 1);
		
		System.out.println(user);
		
		session.close();
	}
	@Test
	public void testCaheTwo()
	{
		SqlSessionFactory factory = FactoryUtil.getFactory();
		
		SqlSession session1 = factory.openSession();
		SqlSession session2 = factory.openSession();
	
		String statement = "com.lx.test8.userMapper.getUser";
		
         CUser user = session1.selectOne(statement, 1);   	     
		  session1.commit();
         System.out.println(user);
         
	    user = session2.selectOne(statement, 1);
         System.out.println(user);
		
	}
	
}

二、mybatis的二级缓存

   直接在映射文件中添加cache标签

  将CUser序列化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值