面试总结

1. mybatis中如何开启二级缓存?

答:第一步、 在配置文件mybatis-config.xml文件中加入<setting name="cacheEnabled" value="true"></setting>.  

注意是加在<configuration><settings><settings></configuration>中。

      第二步: 在对应的mapper文件中加入<cache><cache> 这个文件中的所有查询就都开启的二级缓存了。

开启缓存后,第一次查询会执行sql,第二次及以后的查询都会从缓存中读取数据

在查询语句中禁用二级缓存,useCache="false",   如:

<select id="queryUser" parameterType="HashMap" resultType="com.ly.model.User"  useCache="false"> ...</select>

刷新缓存 flushCache="true", 当更新数据的时间可以进行刷新缓存操作,如:insert、 update、delete

<insert  id="insertUser" parameteType="com.ly.model.User"  flushCache="true"></insert>

 

要使用二级缓存,对应的model必须要实现序列化, implements Serializable

当select 语句 flushCache="false" 表示所有的操作都需要进行缓存,都不会去清空缓存和二级缓存

useCache="true", 表示这条语句将进入二级缓存

当是 insert、update、delete操作的时候, 

flushCache="true" 表示每个操作都要清空一级缓存和二级缓存

这些操作中没有参数useCache

在默认情况下,select语句是开启了缓存的,并且是不刷新缓存的,即: useCache="true",  flushCache="false"

 

Mybatis的一级缓存是指SqlSession。一级缓存的作用域是一个SqlSession。Mybatis默认开启一级缓存。

在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作,则SqlSession的缓存清空。

 

Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容,多个SqlSession共享。Mybatis需要手动设置启动二级缓存。

在同一个namespace下的mapper文件中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作,则二级缓存清空。

mybatis默认没有开启二级缓存,所以要使用的话就需要手动开启二级缓存

一级缓存:

äºçº§ç¼å­

 

二级缓存:

wKiom1WII2CwQRhlAADBHk2wFdY170.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值