zoukankan      html  css  js  c++  java
  • MyBatis的flushCache和useCache的使用注意

    之前在利用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",做了如上设置以后,发现问题就解决了

  • 相关阅读:
    zookeeper安装(linux)
    rabbitmq安装(linux)遇到 很多坑
    关于mysql数据库连接异常处理
    git放弃修改&放弃增加文件
    git使用常见问题
    base64字符串转化成图片
    Block小结
    关闭selinux
    Ctrl快捷键和vim快捷键
    正则表达式扩展正则
  • 原文地址:https://www.cnblogs.com/taiyanhong/p/6999366.html
Copyright © 2011-2022 走看看