Mybatis——一级缓存

本文介绍MyBatis框架中的一级缓存实现原理,包括其底层结构、使用方式及如何清除缓存。通过具体代码示例展示了如何在实际应用中操作一级缓存。

一级缓存即本地缓存,底层就是一个 Map<Object, Object> cache = new HashMap(); 封装在 PerpetualCache 中
1、DefaultSqlSession #selectList
2、BaseExecutor #query #createCacheKey - key = {statementId,rowBounds,boundSql,paramObject}
3、从缓存中去查找,找到返回,未找到查数据库,之后放入缓存

备注:清除一级缓存方式

           ➀ 调用 insert、update、delete 方法

           ➁  调用 session.clearCache();

           ➂  mapper 映射文件中对应的sql语句配置:flushCache="true"

代码示例:

public class TestCacheUtil {

    private UserMapper userMapper;

    private SqlSession session;

    @Before
    public void before() throws IOException {
        String path = "SqlConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(path);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        session = sqlSessionFactory.openSession();
    }

    @Test
    public void test(){
        userMapper = session.getMapper(UserMapper.class);
        UserInfo user1 = userMapper.findUserInfo();
        // 清除一级缓存方法
        session.clearCache();
        UserInfo user2 = userMapper.findUserInfo();
        System.out.println(user1 == user2);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值