缓存P27,28,29

一级缓存:

准备工作:

新建一个项目:复制这三个文件。并且再pom.xml中导入lombox的环境。

缓存P27,28,29

再pojo中新建一个实体类User

缓存P27,28,29
package com.Li.pojo;

import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
    private String pwd;
}

修改config.xml配置的mapper

缓存P27,28,29

开始:

缓存P27,28,29

创建这三个文件。

Mapper:

package com.Li.dao;

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

public interface UserMapper {

    //根据ID查询用户
    User queryUserById(@Param("id") int id);

}

Mapper.xml


        select * from user where id = #{id}

这里为什么是user

缓存P27,28,29

因为开启了别名映射,否则要写完整路径

缓存P27,28,29

Test:

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

public class MyTest {

    @Test
    public void queryUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

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

        System.out.println("=========================================");

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

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

        sqlSession.close();
    }
}

测试之后:

sql只走了一遍。说明是有缓存的,并没有从数据库中查询两次。

缓存P27,28,29

增删改都需要清理缓存。因为增删改之后,数据会变,所以会清理缓存。而查询的时候数据不会变,所以还保留。

手动清理缓存:(加了这段话之后,可以发现结果查询了两次数据库)

缓存P27,28,29

二级缓存(只针对一个mapper也就是一个namespce)

步骤:

  1. 开启全局缓存(二级缓存)

缓存P27,28,29

2.开启缓存(只写一个cache标签也可以,下面的是官方标准的写法)


缓存P27,28,29

3.Test文件

    @Test
    public void test2(){
        SqlSession session = MybatisUtils.getSqlSession();
        SqlSession session2 = MybatisUtils.getSqlSession();

        UserMapper mapper = session.getMapper(UserMapper.class);
        UserMapper mapper2 = session2.getMapper(UserMapper.class);

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

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

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

        session2.close();
    }

结果:

缓存P27,28,29

说明已经开启了二级缓存。即使是两个不同的session也可以快速使用。

自定义缓存

了解即可。

现在一般都是用redis数据库来做缓存。

实现的话,就是在Mapper.xml中配置一个cache标签,自定义名字。之后配置一个resouce文件就可以了。

不怎么关键,了解即可。

Original: https://blog.csdn.net/m0_54842832/article/details/127812859
Author: 蔡勾
Title: 缓存P27,28,29

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/660252/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球