今天想在项目里面 配置使用 redis缓存,想 使用redis 缓存 mybatis dao层的缓存。。。 即开始 使用redis 作为mybatis的 二级缓存使用。 项目是 小项目,默认是 没有开启二级缓存的。。。。 我看了一下 官方 mybatis 的配置,默认是 开启二级缓存的。。。 当前 感觉 很相信官方,觉得项目配置二级缓存错了,,,项目性能肯定有影响啊,不开启的话,而且人家官方都默认开启了,,, 然后接着继续百度看文章,,,, 我去啊,差点被自己坑死了。。。 原来二级缓存不能随便开的。要看场景和情况了。不然有可能造成数据不一致性而造成 很大的 BUG,就麻烦大了。。。当然 出现bug的几率会小很多,,,可是还是有可能的,到时候数据库里面的数据不一致了,就有点受了。不能为了 那点性能问题,,
<!--
| 全局配置设置
|
| 可配置选项 默认值, 描述
|
| aggressiveLazyLoading true, 当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。
| multipleResultSetsEnabled true, 允许和不允许单条语句返回多个数据集(取决于驱动需求)
| useColumnLabel true, 使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。
| useGeneratedKeys false, 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。
| autoMappingBehavior PARTIAL, 指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。
| defaultExecutorType SIMPLE, 配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。
| defaultStatementTimeout null, 设置超时时间,它决定驱动等待数据库响应的秒数。
| -->
<settings>
<!-- 这个配置使全局的映射器启用或禁用缓存,true 开启mybatis默认的二级缓存,默认是 true.
但是 为了数据的准确性,不要推荐使用 二级缓存或者是redis...
除非是 慢查询或者是数据量很大的,或者其他场景下,一般情况不要开启二级缓存或者随便使用第三方的缓存.
特别的是 : 一种最场景的场景就是 后台SQL客户端数据库执行改了SQL,前端查询还是之前的缓存数据就苦逼了。。。
-->
<setting name="cacheEnabled" value="false"/>
<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。
默认是 false
-->
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="defaultExecutorType" value="REUSE"/>
<setting name="defaultStatementTimeout" value="25000"/>
</settings>
参考地址: http://blog.csdn.net/isea533/article/details/44566257
以及 http://blog.csdn.net/potentialenergy/article/details/52924139