栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis禁用一级缓存(mybatis的一级缓存和二级缓存)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis禁用一级缓存(mybatis的一级缓存和二级缓存)

# 本篇文章主要是为了帮助自己总结和加深理解,若能帮助到其他小伙伴也是极好的

基本介绍

        Mybatis中支持一级缓存和二级缓存,一级缓存是默认开启的并且不能关闭,二级缓存默认关闭,可根据需要进行手动开启,总体来说Mybatis的一二级缓存的最终目的就是为了帮助数据库减轻压力,保证高效高速的查询,提高数据库的瓶颈。


一级缓存

        一级缓存是基于hashmap的本地缓存,作用域只在session中,当session刷新或关闭后,这个session中所有的cache就会被清空。

        注意 如果使用clearCache以及增、删、改的sql进行操作会导致select缓存被清空。

命中原则

        mybatis是怎样判断两次select语句是完全相同的查询sql?

        1、statementId

        statementId其实就是select语句标签中的的id,如果两条select的id不同,那么必定不会命中。

例如图中代码,这是两条相同的select查询语句,先使用getByName01进行查询,再使用getByName02以及相同的参数进行查询,仍然不会进入缓存。


    SELECT * FROM `user` WHERe name=#{name}

         2、查询参数

        若两次查询必须使用同一条statementId的sql,并且传入的参数一样,否则无法命中缓存。

        这里要注意的是,mybatis不论你在java代码中使用何种方式进行传参,只要最终sql语句中获取的参数相等就可以判定为是相同的参数。

        我们编写一条根据name查询的select,并且使用Map传参。