zoukankan      html  css  js  c++  java
  • Mybatis_一级缓存

        SqlSessionFactory sessionFactory;
        public void selectPersonByIdLazy() {
            // 创建SqlSession
            SqlSession session = sessionFactory.openSession();
            try {
                // 第一次查询的是数据库
                Person person = session.selectOne("xxx.x.mapper.PersonMapper.selectPersonById", 1);
                // 第一次查询的是缓存
                Person person1 = session.selectOne("xxx.x.mapper.PersonMapper.selectPersonById", 1);
                System.out.println(person);
                System.out.println(person1);
            } catch (Exception e) {
                e.printStackTrace();
                session.rollback();
            } finally {
                session.close();
            }
        }

    在同一个session下// 第一次查询首先去缓存中去根据结果集的唯一标识(Mybatis自己的策略)查找数据,如果缓存中有数据,就使用,没有就去数据库查找,然后把结果集放入缓存// 第二次查询的是缓存

    但是跨session不能使用一级缓存

    一级缓存不受我们配置,二级可以

    如果两次查询中间加一句update更新数据库的语句,那么查了第一次数据会进缓存里,然后执行update后缓存被清空,执行第二次查询又重新查询数据库了。

  • 相关阅读:
    pyqt笔记1模块 信号和插槽
    pyqt5 eric6 pyqt5-tools
    转入Python3.5
    ARM伪指令
    ARM MOV PC加8
    所有JTAG集成电路都应该支持菊花链
    冯诺依曼存储子系统的改进
    [分享]Active-HDL 9.2 安装
    运行python脚本后台执行
    scala实验 模拟图形绘制
  • 原文地址:https://www.cnblogs.com/lonske/p/9025395.html
Copyright © 2011-2022 走看看