一级缓存:myBatis自带,不需要手动配置
缓存的是sql语句,只要保证在同一个链接,查询同一个依据,MyBatis只会在第一次访问数据库,后面的会直接读取缓存中的sql语句。
二级缓存:需要手动配置
缓存的是数据,但要保证在同一工厂,可以跨链接使用,只要保证数据相同,就算使用新连接也不会读取数据库数据,而是从内存中读取。一般是对长时间不变更的sql语句使用,经常变更的数据不要使用缓存,有可能会读取到脏数据。
配置步骤:
1、先在主配置文件中开启二级缓存
settings节点中:<setting name="cacheEnabled" value="true"/>
要在properties数据库配置下放置。
2、在映射文件中添加缓存支持
全写:<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
简写:<cache/>
注意:一定要写在mapper根标签下第一行
全写的属性都是默认值,所以简写全写效果一样
3、在映射文件中,对select节点添加使用或不适用缓存
配置 useCache="true" 表示使用
配置 useCache="false" 表示不适用
mapper文件中
主配置文件中
注意:如果如上一样配置还出错,可以在关联实体类实现
implements java.io.Serializable
这个接口