mybatis select语句缓存使用注意事项
来源:互联网 发布:梗的网络意思 编辑:程序博客网 时间:2024/05/21 07:13
工作中遇到一个select语句缓存问题(可提交读隔离级别下select语句没有读取到其它事物更新后的结果),场景如下:
数据库:mysql
User表结构:
隔离级别:read committed(可提交读)
Mapper文件:
执行结果:
问题:虽然我们把mysql隔离级别设置为read committed,但是第二次查询的结果并没有看到其它事物提交的更新结果。
问题分析:查看日志发现第一次的查询sql打印出来了,但是第二次查询并没有打印sql;猜测可能是由于第二次查询直接使用上一次查询的缓存导致的问题。查看mybatis用户手册,看到select语句中有关于缓存的配置:flushCache配置(默认为false)、useCache(默认为true),也就是说select语句默认缓存是开启的,对于我们这个场景应该把这个缓存给禁掉。
问题解决:同一个session的select语句上设置flushCache="true"
mybatis手册中一下两个配置的解释:
flushCache
将其设置为true,无论语句什么时候被调用,都会导致缓存被清空。默认值:false。
useCache
将其设置为true,将会导致本条语句的结果被缓存。默认值:true。
测试发现,如果设置useCache="false"没有设置flushCache,select的结果还是被缓存了;把flushCache设置为true就没有使用缓存结果了。不知道这是不是mybatis的一个bug。
0 0
- mybatis select语句缓存使用注意事项
- mybatis select语句缓存使用注意事项
- mybatis使用select语句进行关联查询
- Select语句中的注意事项
- select语句 注意事项
- mybatis 在select语句中使用foreach语句报错
- mybatis 查询select语句
- MyBatis中select语句
- Mybatis select查询语句
- 关于使用select语句对变量赋值的注意事项
- MyBatis的一级缓存实现详解 及使用注意事项
- MyBatis的一级缓存实现详解 及使用注意事项
- MyBatis的一级缓存实现详解 及使用注意事项
- mybatis的xml配置文件中使用select语句数据不全
- 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
- 《深入理解mybatis原理(三)》 MyBatis的一级缓存实现详解 及使用注意事项
- 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
- 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
- QTableWidget的使用和美工总结
- Service与Android系统设计(2)-- Parcel
- Linux中文件查找技术大全
- Rocky原创:什么是硬件设计?
- 判断网络连接状态
- mybatis select语句缓存使用注意事项
- 备忘:编译Apache的configure: error: Size of "void *" is less than size of "long"错误
- yarn作业初始化源码
- extjs打印
- linux关于bashrc与profile的区别
- NSRunLoop总结
- MFC学习指南
- MPEG-4与H.264的区别 , 编码 以及 应用
- BufferedReader的用法