mybatis的二级缓存
时间: 2023-11-05 15:04:42 浏览: 83
MyBatis的二级缓存是一个跨session的缓存,它可以在多个session之间共享数据。二级缓存需要手动开启,而且只对查询做了缓存,对于增、删、改等操作并不会影响缓存。当一个查询被缓存后,再次执行相同的查询,MyBatis会先从缓存中获取数据,如果缓存中没有数据,则会从数据库中查询,并将查询结果放到缓存中。
MyBatis的二级缓存是基于namespace级别的,也就是说,不同的namespace会有不同的缓存。如果两个mapper使用了同一个namespace,则它们会共用一个缓存。如果不同的namespace中使用了相同的SQL语句,则它们依然会有各自的缓存。
MyBatis的二级缓存默认是关闭的。要开启二级缓存,需要在Mapper.xml中添加以下配置:
```
<cache type="org.apache.ibatis.cache.impl.PerpetualCache"/>
```
其中,type属性指定了缓存的实现类,PerpetualCache是MyBatis默认的实现类。如果需要使用其他的缓存实现类,可以自己实现一个缓存类,并指定type属性。
需要注意的是,二级缓存对于数据的更新操作(insert、update、delete)是不会自动刷新的,需要手动清空缓存。可以在Mapper.xml中添加以下配置:
```
<cache-ref namespace="com.example.UserMapper"/>
```
其中,namespace属性指定了需要清空缓存的Mapper接口。当该Mapper接口中执行了更新操作后,MyBatis会自动清空该Mapper接口对应的缓存。
阅读全文