一级缓存:
准备工作:
新建一个项目:复制这三个文件。并且再pom.xml中导入lombox的环境。
再pojo中新建一个实体类User
package com.Li.pojo;
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private String pwd;
}
修改config.xml配置的mapper
开始:
创建这三个文件。
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
因为开启了别名映射,否则要写完整路径
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只走了一遍。说明是有缓存的,并没有从数据库中查询两次。
增删改都需要清理缓存。因为增删改之后,数据会变,所以会清理缓存。而查询的时候数据不会变,所以还保留。
手动清理缓存:(加了这段话之后,可以发现结果查询了两次数据库)
二级缓存(只针对一个mapper也就是一个namespce)
步骤:
- 开启全局缓存(二级缓存)
2.开启缓存(只写一个cache标签也可以,下面的是官方标准的写法)
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();
}
结果:
说明已经开启了二级缓存。即使是两个不同的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/
转载文章受原作者版权保护。转载请注明原作者出处!