首先,上代码:

    public void listMybatisModel() {
List<MybatisModel> mybatisModels = mapper.listMybatisModel();
List<MybatisModel> mybatisModelsOther = mapper.listMybatisModel();
System.out.println(mybatisModels == mybatisModelsOther);
System.out.println("list count: " + mybatisModels.size());
}

listMybatisModel是使用springAOP控制的事务方法,方法中:

System.out.println(mybatisModels == mybatisModelsOther);

输出竟然是true!也就是说,它们使用的是同一个内存地址。所以我们可以想象这种情况:

    public void listMybatisModel() {
List<MybatisModel> mybatisModels = mapper.listMybatisModel();
// 对mybatisModels的值进行改变
// ...
// 那么mybatisModelsOther的值也会跟着改变,而不是取到正确的数据库的值,造成数据错误
List<MybatisModel> mybatisModelsOther = mapper.listMybatisModel();
System.out.println(mybatisModels == mybatisModelsOther);
System.out.println("list count: " + mybatisModels.size());
}

解决办法:在Sql映射文件标签中加入属性 flushCache="true"

<select ... flushCache="true" >

最新文章

  1. 自用的基于Emit的C#下DataTable转实体类方法
  2. 1 为什么搭建.Net core下的云开发框架
  3. eclipse SE增加Web开发插件;安装配置Apache
  4. JAVA经典算法40题(供面试所用)
  5. 比较常用的几个maven第三方镜像
  6. Thinkphp源码分析系列(二)–引导类
  7. 解决ubuntu sudo not found command的问题
  8. Java中的注解是如何工作的?--annotation学习一
  9. HDU 5120 Intersection(几何模板题)
  10. jquery Deferred使用经验
  11. 并查集专辑 (poj1182食物链,hdu3038, poj1733, poj1984, zoj3261)
  12. Jmeter3.2源码编译环境搭建
  13. Nacos发布0.5.0版本,轻松玩转动态 DNS 服务
  14. (转)GANs and Divergence Minimization
  15. [算法专题] BST&amp;AVL&amp;RB-Tree
  16. mysql——创建索引、修改索引、删除索引的命令语句
  17. DDD领域驱动设计(例子)
  18. 微软BI 之SSRS 系列 - 使用 LookupSet 和 Adjacent Group 等高级技巧在报表中跨 Dataset 分组查询
  19. idea安装插件
  20. 转)Ubuntu安装mysql5.7

热门文章

  1. 一.RocketMQ消息中间件 windwos使用
  2. 三分钟教你学Git(十八) - 重写历史
  3. Ubuntu - 硬盘分区、格式化、自动挂载配置
  4. C语言i++和++i的区别和指针*(a++)和*(++a)的区别
  5. (转)IntelliJ IDEA下的使用git
  6. eclipse缺省的Server没有weblogic
  7. java泛型介绍
  8. [读后感]Java 控制台执行 Jar 传參的编码问题
  9. 常见Style 对象属性值
  10. maven modules