一、二级缓存
默认关闭的
1、全局开关:默认true
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
2、各个mapper的xml文件-开启某个namespace
<cache />
3、关闭某个mapper statement
<select id="inetAton" resultType="integer" useCache=“false”>
select inet_aton(#{name})
</select>
二、一级缓存
默认开启
1、如果没有开启事务,每次sql用的新的sqlsession,这时一级缓存是失效的。
2、如果有事务,同一个事务中相同的查询使用的相同的SqlSessioon,此时一级缓存是生效的。
如何判断是否是同一个SqlSession 可以把日志级别降到debug级别查看相应的SqlSessionId
三、sqlSessionTemplate
装饰者模式、线程安全的、defaultSqlSession线程不安全
四、