博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis 开启使用 默认的 二级缓存
阅读量:6342 次
发布时间:2019-06-22

本文共 1190 字,大约阅读时间需要 3 分钟。

hot3.png

标题1, mybatis 默认二级缓存是没有开启的,

虽然网上说了,全部开启二级缓存是有风险和可能造成一些数据不一致性的问题。 但是有时候 查询的时候 ,特别是 循环 查询的时候, 会比较慢,这样时候使用二级缓存就 非常的好了,代码都不需要修改,效率会比较高。也不需要 使用 第三方的缓存的

如何开启二级缓存和使用呢

网上百度了一下,其实看到我有点 糊涂,到底应该怎样才算是开启呢,而且 我们不 应该全局开启二级缓存的, 这样 真的很容易出现问题,我们一般需要开启的是 某个 namespace 就是 某个 sql ,, xml 。 开启某个namespace 的二级缓存是 不需要 开启全局的二级缓存的,这个不要忽略了。

这里面说明一下 ,全局的二级缓存开启时这样的 ,默认 全局的二级缓存是 关闭的:

如何开启某个namespace 的二级缓存

这个才是重点,才是我们需要的。默认 namespace的 二级缓存也是关闭的 开启某个 namespace , ,, 如果我们开启了 全局的 二级缓存了,默认 所有的 namespace 的二级缓存都是开启的,这个不需要配置开启的,,, 在 全局的二级缓存没有开启的情况下,开启:

只需要 加上 <cache/> 就算开启了。。。

默认 整个 namespace 下面的 所有 select 查询都是 开启了 二级缓存的, 删除,更新,插入的时候, 整个 namespace 的二级缓存就被清空了,下次请求的时候回去 请求数据库,然后将 数据缓存下来的。

因为:

useCache="true"  默认都是 true的:

当然如何我们 要某个select 不进行二级缓存可以设置 useCache="false " 就可以了。。。

即 只有 设置了,全局的二级缓存和 namespace的 二级缓存 : useCache="true" 才会生效的。

这里特别 说明一点,, namespace 对应的 model 必须实现序列化,否则二级缓存 会不成功的,甚至会报错:

Cause: java.io.NotSerializableException

实现序列化: xxx implements Serializable 即可

参考地址: http://www.jb51.net/article/109309.htm 以及http://www.cnblogs.com/QQParadise/articles/5109633.html

转载于:https://my.oschina.net/u/2419285/blog/1162611

你可能感兴趣的文章
悦纳自己
查看>>
python字符串函数
查看>>
iOS-触摸事件、手势识别、摇晃事件、耳机线控
查看>>
牛腩新闻发布系统 (3) 存过过程或函数""需要""参数,但未提供该参数
查看>>
ORM框架Hibernate (四)MyEclipse Hibernate Tool 逆向生成实体类
查看>>
js中substr与substring的区别
查看>>
去掉iphone连接电脑时会出现的弹出窗口
查看>>
【python】-- web开发之HTML
查看>>
vs2015 去除 git 源代码 绑定
查看>>
解决firefox的button按钮文字不能垂直居中
查看>>
网络协议端口号详解
查看>>
大话数据结构读后感——第一章
查看>>
各种排序
查看>>
ts 格式化日期输出
查看>>
Optional
查看>>
sed 命令编辑文本
查看>>
LRUCache 具体解释
查看>>
Activity调用isDestroyed()方法报出,java.lang.NoSuchMethodError
查看>>
使用AFNetworking第三方下载类
查看>>
fhq-treap小结
查看>>