之前在利用MyBatis做开发的时候,遇到了一个问题,使用select配置的时候发现前后两次的结果是一样的,并且使用statementType="CALLABLE"配置,然后在配置中写PL/SQL代码去更新数据库的时候,发现只更新了第一次,第二次在对传进来的参数没有变化的情况下,就不会在进入PL/SQL代码中执行。后来发现,这是由于MyBatis缓存的原因。
在MyBatis中有flushCache、useCache这两个配置属性,分为下面几种情况:
(1)当为select语句时:
flushCache默认为false,表示任何时候语句被调用,都不会去清空本地缓存和二级缓存。
useCache默认为true,表示会将本条语句的结果进行二级缓存。
(2)当为insert、update、delete语句时:
flushCache默认为true,表示任何时候语句被调用,都会导致本地缓存和二级缓存被清空。
useCache属性在该情况下没有。
上面的信息我是从MyBatis官方文档中找到的,会发现当为select语句的时候,如果没有去配置flushCache、useCache,那么默认是启用缓存的,所以,如果有必要,那么就需要人工修改配置,修改结果类似下面:

<select id="save" parameterType="XXXXXEO" statementType="CALLABLE" flushCache="true" useCache="false">
    ……

</select>

上面的statementType="CALLABLE"这个属性是我的项目中需要用到的,如果用不到就不用管它,注意后面的flushCache="true"和useCache="false",做了如上设置以后,发现问题就解决了

最新文章

  1. 烂泥:redis3.2.3安装与配置
  2. 快速理解几种常用的RAID磁盘阵列级别
  3. Java 概述
  4. php配置文件语法
  5. angularJS自定义指令模板替换
  6. 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL(转)
  7. 关于htmlspecialchars实体字符转码的问题
  8. 服务器返回数组,data[0]得到的总是不对?如何处理?
  9. codeforces div.1 A
  10. sdut 2819 比赛排名(边表 拓扑排序)
  11. 如何让你的eclipse运行更快和eclipse常用快捷键
  12. C#实现网页表单自动提交
  13. API 设计: RAML、Swagger、Blueprint三者的比较
  14. 设计模式 单例模式(Singleton) [ 转载 ]
  15. qq客服问题
  16. Java Stack源码分析
  17. 5分钟看懂svg path 路径的所有命令(更有API解释、有图、有图文对比解析)
  18. [CTF隐写]png中CRC检验错误的分析
  19. mssql sqlserver 取消数值四舍五入的方法分享
  20. 【ORIGINATE】详解

热门文章

  1. Linux下移动图像监测系统——motion的移植及应用
  2. 安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解
  3. 聊聊面试中的 Java 线程池
  4. 简单分析ThreadPoolExecutor回收工作线程的原理
  5. 通过sysbench工具实现MySQL数据库的性能测试
  6. 史上最全IO流详解,看着一篇足矣
  7. npm常用命令(原创)
  8. Bellman-Ford 算法
  9. 色彩缤纷的python(改变字体颜色及样式不完全版)
  10. Where is the clone one and how to extract it?