MyBatis缓存
分类:计算机 | 数据库 | 综合 1256
更新: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使用经验-如何刷新表格数据10936
- 2three.js加载3D瓦片和3dtiles数据生成交互式地图的开源项目9481
- 3Microsoft Visual C++ Redistributable是什么,有什么作用?7252
- 4mybatis使用经验——mybatis-spring-boot-starter和mybatis的版本对应关系表(持续更新~)5823
- 5uni-app使用经验—vue页面和html页面如何互相调用接口并传参5468
- 6Spring学习经验—@ResponseBody注解的使用说明4870
- 7Intellij IDEA下的版本控制VCS的启用与关闭4868
- 8Druid异常解决经验—java.sql.SQLException url not set4499
- 9如何用批处理命令(bat脚本)启动和停止windows服务4266
- 10nuxt.js项目中如何添加和使用全局变量4134
- 11解决SpringBoot使用maven下载不了jar包的问题3481
- 12linux中解压tar.gz文件报错“gzip: stdin: invalid compressed data--format violated”3386
- 13nuxtjs asyncData使用经验—如何发起多个axios请求并携带参数3236
- 14在Nuxt.js项目的head中引用外部js文件3080
- 15在NVIDIA控制面板设置参数时提示“拒绝访问 无法应用选定的设置到您的系统”的解决方法之一3056