MyBatis缓存
分类:计算机 | 数据库 | 综合 570
更新:2020-04-05 12:09:20编辑
参考资料
https://blog.csdn.net/u014749862/article/details/80297943
mybatis 缓存的使用, 看这篇就够了
概述
缓存的重要性是不言而喻的。 使用缓存, 我们可以避免频繁的与数据库进行交互, 尤其是在查询越多、缓存命中率越高的情况下, 使用缓存对性能的提高更明显。
mybatis 也提供了对缓存的支持, 分为一级缓存和二级缓存。 但是在默认的情况下, 只开启一级缓存(一级缓存是对同一个 SqlSession 而言的)。
一级缓存
二级缓存
在mapper.xml中开启二级缓存
在mapper.xml文件中可以通过如下配置来开启二级缓存:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ctd.cmp.loganalyse.bean.pojo.mapper.CtdBizMetricsMapper">
<!-- 缓存10分钟 -->
<cache eviction="FIFO" flushInterval="600000" size="4096" readOnly="true"/>
<select id="save" parameterType="XX" flushCache="true" useCache="false"> </select>
</mapper>
其中,各个属性的意义如下:
1、eviction:缓存回收策略
LRU:最少使用原则,移除最长时间不使用的对象。
FIFO:先进先出原则,按照对象进入缓存顺序进行回收。
综合
mybatis在mapper.xml中禁用某个方法的缓存
禁用某个方法缓存,默认是useCache="true"
<select id="findUser" resultType="user" parameterType="int" useCache="false">
SELECT * FROM USER WHERE id = #{id}
</select>
某个增删改方法执行的时候不刷新缓存,应该设置flushCache="false"。默认是flushCache="true",刷新缓存。
<!-- flushCache="false" 默认为true-->
<insert id="saveUser" parameterType="user" flushCache="false">
INSERT INTO USER (username,sex,birthday,address) VALUES (#{username},#{sex},#{birthday},#{address})
</insert>
猿导航
阅读排行榜
- 1vue和el-table使用经验-如何刷新表格数据6505
- 2uni-app使用经验—vue页面和html页面如何互相调用接口并传参3403
- 3nuxt.js项目中如何添加和使用全局变量1921
- 4如何用批处理命令(bat脚本)启动和停止windows服务1914
- 5nuxtjs asyncData使用经验—如何发起多个axios请求并携带参数1806
- 6Spring学习经验—@ResponseBody注解的使用说明1788
- 7Druid异常解决经验—java.sql.SQLException url not set1760
- 8解决SpringBoot使用maven下载不了jar包的问题1743
- 9Intellij IDEA下的版本控制VCS的启用与关闭1736
- 10linux如何成功地离线安装docker1618
- 11在Nuxt.js项目的head中引用外部js文件1586
- 12Nuxt.js项目实现路由鉴权和用户登录1575
- 13软件项目管理——详细设计说明书模板11537
- 14Windows中使用Nginx解决前后端分离部署中的跨域问题1479
- 15Element-UI学习经验——el-switch开关的用法1415