MyBatis:缓存(狂神)

MyBatis:缓存(狂神)_第1张图片

MyBatis:缓存(狂神)_第2张图片 

操作步骤:

MyBatis:缓存(狂神)_第3张图片

 MyBatis:缓存(狂神)_第4张图片

 MyBatis:缓存(狂神)_第5张图片

MyBatis:缓存(狂神)_第6张图片 

MyBatis:缓存(狂神)_第7张图片 

MyBatis:缓存(狂神)_第8张图片 

 

MyBatis:缓存(狂神)_第9张图片

MyBatis:缓存(狂神)_第10张图片

MyBatis:缓存(狂神)_第11张图片

MyBatis:缓存(狂神)_第12张图片

MyBatis:缓存(狂神)_第13张图片 

 do.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=&useUnicode=true&characterEncoding=utf-8
username=root
password=123456

mybatis-config.xml:







    
        
        
        
    



    
        
        
        

    


    

    
        
    

    
        
            
            
            
                
                
                
                
            
        
    


    
        
    



User:

package com.kuang.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    private int id;
    private String name;
    private String pwd;
}

UserMapper:

package com.kuang.dao;

import com.kuang.pojo.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    //查询指定用户
    User queryUserById(@Param("id") int id);

    int updateUser(User user);
}

UserMapper.xml:




    

    
    


    

    
        update mybatis.user11 set name=#{name},pwd=#{pwd} where id=#{id}
    

MyTest:

import com.kuang.dao.UserMapper;
import com.kuang.pojo.User;
import com.kuang.utils.MybaitsUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class MyTest {
    //一级缓存
    @Test
    public void queryUserById(){
        SqlSession sqlSession= MybaitsUtils.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);

        User user = mapper.queryUserById(1);
        System.out.println(user);
        //mapper.updateUser(new User(2,"张三2","123456"));//增删改会更新缓存

        sqlSession.clearCache();//手动清理缓存

        System.out.println("================");
        User user2=mapper.queryUserById(1);
        System.out.println(user2);

        System.out.println(user==user2);

        sqlSession.close();
    }
    //二级缓存
    @Test
    public void test2(){
        SqlSession sqlSession= MybaitsUtils.getSqlSession();
        SqlSession sqlSession2= MybaitsUtils.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);

        User user = mapper.queryUserById(1);
        System.out.println(user);
        sqlSession.close();

        System.out.println("================");
        UserMapper mapper2=sqlSession2.getMapper(UserMapper.class);
        User user2=mapper2.queryUserById(1);//从二级缓存中获取
        System.out.println(user2);

        User user3=mapper2.queryUserById(2);
        System.out.println(user3);

        User user4=mapper2.queryUserById(2);
        System.out.println(user4);//一级缓存中获取
        

        System.out.println(user==user2);
        sqlSession2.close();


    }
}

一次sqlSession开启一级缓存 

MyBatis:缓存(狂神)_第14张图片

 添加更新操作,打开注释,刷新缓存:

MyBatis:缓存(狂神)_第15张图片

手动清理缓存,注释更新,打开注释: 

MyBatis:缓存(狂神)_第16张图片

 二级缓存:

MyBatis:缓存(狂神)_第17张图片

缓存原理

MyBatis:缓存(狂神)_第18张图片

 自定义缓存:

MyBatis:缓存(狂神)_第19张图片

 需要创建一个ehcache.xml:




    

    

    

 

 

你可能感兴趣的:(MyBatis框架学习,缓存,mybatis,mysql,java)