Mybatis一级缓存二级缓存 延迟加载

目录

每文一铺垫

Mybatis一级缓存

Mybatis二级缓存

 介绍:Cache Hit Ratio 

Mybatis延迟加载

什么是延迟加载

全局延迟加载

局部延迟加载

收尾


每文一铺垫

今天没有什么特别的,但是在朋友圈看到了一个图还是很好玩的,拿出来分享给大家,这个贼搞笑,里面有辣条、大虾、大葱、辣椒、小米辣、棉花糖、冰激凌、黄瓜……做的糖葫芦哈哈哈哈哈哈哈,惊呆了老铁!

今天分享咱们的mybatis一级缓存、二级缓存和延迟加载

Mybatis一级缓存

这个直接讲的话可能会有些懵,直接上栗子

先看我们的基础代码

@Test
public void test1() throws IOException {
    //1. 读取配置文件,通过mybatis提供的Resources对象读取
    //InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
    InputStream is = MybatisTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");
    //2. 获取sqlSession工厂对象  sqlSessionFactory
    //2.1 获取SqlSessionFactory的构建者对象
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    //2.2. 获取sqlSession工厂对象
    SqlSessionFactory sf = builder.build(is);
    //3. 获取sqlSession对象
    SqlSession sqlSession = sf.openSession();
    //4. 使用SqlSession创建dao接口的代理对象
    Customer customer1 = sqlSession.getMapper(Customer.class);
    //5. 使用代理对象执行查询所有方法
     Customer customer1 = mapper.findById(1);
    System.out.println(customer1 );
    //6. 释放资源
    sqlSession.close();
    is.close();
}

这是不是最基础的mybatis操作流程

思考一个问题 :在这里我们调用了findById();方法,当我们再次调用findById();方法,是从哪里查询的呢?

带着问题,第二次调用findById();方法看一下

        //获取SqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);
        Customer customer1 = mapper.findById(1);
        Customer customer2 = mapper.findById(1);
        sqlSession.close();

看一下执行的SQL语句,我们发现SQL查询语句只执行了一次

 结论:在一个SqlSession中,对customer表格根据id进行2次查询,只会执行一次SQL语句,第一次查询,发送sql,将查询的结果放进缓存中,第二次查询时,由于是同一个SqlSession,会在缓存中查询结果如果有,直接从缓存中获取结果,不和数据库进行交互

 以上是对“查询”操作而言,那么中间执行一次更新操作,是怎么执行的呢?

  SqlSession sqlSession = MyBatisUtils.getSqlSess
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值