1 一级缓存
一级缓存默认是开启的
2 二级缓存
开启二级缓存需要设置两个地方
-
settings设置
设置mybatis-config.xml参数
<configuration>
<settings>
<!-- cacheEnabled默认为true -->
<setting name="cacheEnabled" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:cache"/>
<property name="username" value="sa"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Mapper.xml"/>
</mappers>
</configuration>
- cache参数配置
需要在mapper.xml中添加cache配置
<mapper namespace="Mapper">
<cache/>
<!-- flushCache参数的作用是同时关闭一级缓存和二级缓存, 默认是false-->
<!-- 对二级缓存的细粒度控制,当前select语句是否使用二级缓存,useCache默认为true-->
<select id="getAllUsers" resultMap="results" flushCache="false" useCache="true">
select *
from users
</select>
<resultMap type="User" id="results">
<id column="id" property="id"/>
<result property="name" column="name"/>
</resultMap>
<insert id="addUser">
insert into users(id, name)
values (#{id}, #{name})
</insert>
</mapper>
可以通过代码调试观察日志,看缓存使用的情况
可以下载代码调试更加直观的理解缓存使用:github代码