首先,二级缓存默认不开启!

要配置 <setting name="cacheEnabled" value="true"/>

在MyBatis中:一级缓存会维护一个HashMap,key为hashcode+statementId+sql语句,Value为查询出来的结果集映射成的java对象。作用域是SqlSession

二级缓存是namespace级的,还需要在配置文件处配置缓存<cache/>

在配置了分布查询

 <select id="selectEmployees" resultMap="emps">
select id,last_name,gender,descr,did from employee
</select> <resultMap type="com.atguigu.bean.Employee" id="emps">
<id column="id" property="id"/>
<result column="last_name" property="lastName"/>
<result column="gender" property="gender"/>
<result column="descr" property="descr"/> <association property="dept" select="com.atguigu.mapper.DepartmentMapper.selectDepartmentById"
column="{id=did}"></association>
</resultMap>

和延时加载后

 <setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>

此时刷新查询结果页面会报错

   1 type Exception report
2
3 message javax.el.ELException: Error reading 'dept' on type com.atguigu.bean.Employee_$$_jvst6ff_0
4
5 description The server encountered an internal error that prevented it from fulfilling this request.
6
7 exception
8
9 org.apache.jasper.JasperException: javax.el.ELException: Error reading 'dept' on type com.atguigu.bean.Employee_$$_jvst6ff_0
10 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:561)
11 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
12 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
13 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
14 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
15 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
16 org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
17 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:266)
18 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225)
19 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
20 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
21 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
22 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
23 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
24 javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
25 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
26 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
27 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
28 org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
29 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
30 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
31 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
32 root cause
33
34 javax.el.ELException: Error reading 'dept' on type com.atguigu.bean.Employee_$$_jvst6ff_0
35 javax.el.BeanELResolver.getValue(BeanELResolver.java:110)
36 org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
37 org.apache.el.parser.AstValue.getValue(AstValue.java:184)
38 org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
39 org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:950)
40 org.apache.jsp.pages.list_jsp._jspx_meth_c_005fforEach_005f0(list_jsp.java:212)
41 org.apache.jsp.pages.list_jsp._jspService(list_jsp.java:124)
42 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
43 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
44 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
45 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
46 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
47 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
48 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
49 org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
50 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:266)
51 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225)
52 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
53 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
54 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
55 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
56 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
57 javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
58 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
59 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
60 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
61 org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
62 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
63 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
64 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
65 root cause
66
67 org.apache.ibatis.executor.ExecutorException: Cannot get Configuration as configuration factory was not set.
68 org.apache.ibatis.executor.loader.ResultLoaderMap$LoadPair.getConfiguration(ResultLoaderMap.java:220)
69 org.apache.ibatis.executor.loader.ResultLoaderMap$LoadPair.load(ResultLoaderMap.java:191)
70 org.apache.ibatis.executor.loader.AbstractEnhancedDeserializationProxy.invoke(AbstractEnhancedDeserializationProxy.java:78)
71 org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedDeserializationProxyImpl.invoke(JavassistProxyFactory.java:186)
72 com.atguigu.bean.Employee_$$_jvst6ff_0.getDept(Employee_$$_jvst6ff_0.java)
73 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
74 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
75 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
76 java.lang.reflect.Method.invoke(Method.java:498)
77 javax.el.BeanELResolver.getValue(BeanELResolver.java:99)
78 org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
79 org.apache.el.parser.AstValue.getValue(AstValue.java:184)
80 org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
81 org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:950)
82 org.apache.jsp.pages.list_jsp._jspx_meth_c_005fforEach_005f0(list_jsp.java:212)
83 org.apache.jsp.pages.list_jsp._jspService(list_jsp.java:124)
84 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
85 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
86 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
87 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
88 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
89 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
90 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
91 org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
92 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:266)
93 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225)
94 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
95 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
96 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
97 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
98 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
99 javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
100 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
101 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
102 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
103 org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
104 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
105 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
106 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
107 note The full stack trace of the root cause is available in the Apache Tomcat/7.0.79 logs.

错误页面

这可能是由于第一次查询将结果保存在了二级缓存中,在第二次查询时,由于设置了延时加载,在缓存中只查到了Employee对应的属性,但对于第二步却无法一次性而出现问题。

解决办法是关闭二级缓存。

(问别人的时候还以为二级缓存默认开启真鸡儿丢人)

MyBatis中二级缓存和延时加载同时开启的问题的更多相关文章

  1. Android批量图片加载经典系列——采用二级缓存、异步加载网络图片

    一.问题描述 Android应用中经常涉及从网络中加载大量图片,为提升加载速度和效率,减少网络流量都会采用二级缓存和异步加载机制,所谓二级缓存就是通过先从内存中获取.再从文件中获取,最后才会访问网络. ...

  2. MyBatis入门(五)---延时加载、缓存

    一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ****** ...

  3. Hibernate中的一级缓存、二级缓存和懒加载(转)

    1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...

  4. Hibernate中的一级缓存、二级缓存和懒加载

    1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...

  5. SSM-MyBatis-18:Mybatis中二级缓存和第三方Ehcache配置

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 二级缓存 Mybatis中,默认二级缓存是开启的.可以关闭. 一级缓存开启的.可以被卸载吗?不可以的.一级缓存 ...

  6. mybatis中二级缓存整合ehcache实现分布式缓存

    mybatis自带二级缓存,但是这个缓存是单服务器工作,无法实现分布式缓存.那么什么是分布式缓存呢?假设现在有两个服务器1和2,用户访问的时候访问了1服务器,查询后的缓存就会放在1服务器上,假设现在有 ...

  7. Mybatis的二级缓存配置

    一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的.  Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的 ...

  8. 一段实现页面上的图片延时加载的js

    大家如果使用firebug去查看的话就会发现,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对于比较 ...

  9. js实现网页图片延时加载的原理和代码 提高网站打开速度

    有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对 ...

随机推荐

  1. Python 标准库 —— string

    1. maketrans()/translate() maketrans(frm, to) -> string, 建立从字符串 frm 到 to 的映射表(字符串的形式): translate( ...

  2. CCD 与 CMOS

    窗帘快门与全局快门: 窗帘快门,每次只允许一条缝的光线摄入,因此会呈现自上而下的扫描式拍摄,也就意味着画面上的不同高度,其实拍摄的时间是不同的,也就进一步造成了在高速移动的火车上,如果拍摄窗外的景物, ...

  3. BLAS 与 Intel MKL 数学库

    0. BLAS BLAS(Basic Linear Algebra Subprograms)描述和定义线性代数运算的规范(specification),而不是一种具体实现,对其的实现包括: AMD C ...

  4. ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 是对 ASP.NET 有重大意义的一次重新设计.本章节我 ...

  5. SQL like使用 模糊查询

    模糊查询: 参考资料:http://www.w3school.com.cn/sql/sql_wildcards.asp 在搜索数据库中的数据时,您能够使用 SQL 通配符. SQL 通配符  Like ...

  6. 让你的sublime text写C代码 (sublime text 2 配置构建C开发环境)

    原则 1. 首先你要配置能够编译C++/C环境 2. window中配置该执行环境的环境变量,能够全局使用 3. sublime Text创建新的构建机制.并设置用改全局编译环境 具体过程 能够编译C ...

  7. POJ读书笔记2.1 —— 鸡兔笼带

    http://blog.csdn.net/pipisorry/article/details/36433305 问题描写叙述  一个笼子里面关了鸡和兔子(鸡有2仅仅脚.兔子有4仅仅脚.没有例外). 已 ...

  8. 项目管理 BUG管理 —— 禅

    眼下市场管理BUG该平台是非常,例如 QC(Quality Center) 国际顶级.功能强大但收费. Bugzilla 开源免费.功能还不错.但界面丑陋,配置繁琐. EasyBUG 在线式.无需配置 ...

  9. WPF - 本质:数据和行为

    原文:WPF - 本质:数据和行为 如果自己来做一个UI框架,我们会首先关注哪些方面?我想UI框架主要处理的一定包括两个主要层次的内容,一个是数据展现,另一个就是数据操作,所以UI框架必须能够接收各种 ...

  10. 用Nginx实现微信小程序本地SSL请求

    我们在开发小程序的时候,需要填写一个授权域名.还要有一个证书.这些都是花钱的.开发非常不方便.本文主要讲解配置ssl和本地开发 小程序后台添加授权域名 这个域名你要写一个是备案过的.具体是不是你的,都 ...