测试mybatis延迟加载错误与解决方法
什么是延迟加载?
延迟加载又叫懒加载,也叫按需加载,也就是说先加载主信息,需要的时候,再去加载从信息。
需求:
查询订单信息,需要时再去查询用户信息
实现方式:
编写两个statement,其中一个statement是查询订单信息,一个是查询用户信息,但是查询订单信息的statement要使用resultMap标签进行结果映射。
Mapper接口:
/**
* 延迟加载 查询订单 需要时在查询用户信息
* */
public List<OrderExt> lazyLoading();
Mapper映射文件:OrderMapper.xml
<resultMap type="orderExt" id="lazyLoading">
<!-- 订单信息 -->
<id column="id" property="id" />
<result column="number" property="number" />
<result column="user_id" property="user_id" />
<!-- 用户信息 -->
<association property="user"
select="com.heima.mapper.UserMapper.findUserById" column="user_id"/>
</resultMap>
<!-- 延迟加载 -->
<select id="lazyLoading" resultMap="lazyLoading">
SELECT * from orders
</select>
<select id="findUserById" parameterType="int" resultType="com.heima.po.User">
SELECT * FROM USER WHERE id = #{id}
</select>
Mybatis全局映射文件:
<!-- 延迟加载 懒加载 -->
<settings>
<setting name="lazyLoadingEnabled" value="true" />
<setting name="aggressiveLazyLoading" value="false" />
</settings>
Test类:
@Test
public void lazyLoading(){
SqlSession sqlSession = sqlSessionFactory.openSession();
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
List<OrderExt> list = mapper.lazyLoading();
for(OrderExt order : list){
System.out.println(order);
}
}
在测试过程中出了一个错误:

解决方法:
把OrderMapper映射文件中的 association标签中的column值写错了,下面是正确写法 ,column这个属性不能省略,否则将报错。
<association property="user"
select="com.heima.mapper.UserMapper.findUserById" column="user_id"/>
测试mybatis延迟加载错误与解决方法的更多相关文章
- Linux系统Vsftp 传文件出现 553 Could Not Create File错误的解决方法
解决方法: 登录出现了这个错误提示:553 Could not create file SELinux设置如下 查看SELinux设置 [root@localhost ~]# getsebool -a ...
- ADB几种常见的错误及解决方法
下面列举出几种常见的错误及解决方法. Q1:无效的安装包,安装包已损坏[INSTALL_FAILED_INVALID_APK] A1:请检查安装包是否完整.如果是xpk包,可以通过 手动安装xpk来检 ...
- 微信jssdk常见错误及解决方法
调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息.以下为常见错误及解决方法: invalid url domain当前页面所在域名与使用 ...
- 编程中遇到的Python错误和解决方法汇总整理
这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...
- CentOS 安装hping3工具及安装遇到的错误及解决方法
hping是用于生成和解析TCPIP协议数据包的开源工具.创作者是Salvatore Sanfilippo.目前最新版是hping3,支持使用tcl脚本自动化地调用其API.hping是安全审计.防火 ...
- Eclipse启动时发生An internal error occurred during: "Initializing Java Tooling".错误的解决方法
问题描述: Eclipse启动时发生An internal error occurred during: "Initializing JavaTooling".错误的解决方法 解决 ...
- GCC-4.6.3编译linux2.6.32.12内核出现“重复的成员‘page’”错误的解决方法
使用gcc4.6.3编译linux2.6.32.12内核出现错误如下: In file included from drivers/net/igbvf/ethtool.c:36:0: drivers/ ...
- [转]权限问题导致Nginx 403 Forbidden错误的解决方法
权限问题导致Nginx 403 Forbidden错误的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-08-22 这篇文章主要介绍了权限问题导致Nginx 403 F ...
- ueditor上传大容量视频报http请求错误的解决方法
故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器 ...
随机推荐
- nginx开启gzip的方法
nginx开启gzip的方法 1.vi打开Nginx配置文件 <pre>vi /usr/local/nginx/conf/nginx.conf</pre> 2.找到如下一段,进 ...
- @Import导入自定义选择器
@Import导入自定义选择器 之前一篇博文:Spring中的@Import注解已经详细介绍了@Import注解,不赘述. 需求描述 通过@import注解自定义组件选择器,将满足我们自定义的规则的b ...
- 将Javabean转化JSONObject为对象
JSONObject.parseObject(JSONObject.toJSON(obj).toString()):
- URL中出现了%E2%80%8E(Zero-Width Space)
下面两个url地址,看起来是一样的,但是粘贴到记事本里会发现一个多出了很长的空格 url: '/secure/Dishes/GetList', url: '/secure/Dishes/GetLis ...
- AQS工作原理分析
AQS工作原理分析 一.大致介绍1.前面章节讲解了一下CAS,简单讲就是cmpxchg+lock的原子操作:2.而在谈到并发操作里面,我们不得不谈到AQS,JDK的源码里面好多并发的类都是通过Sy ...
- 12. Scala模式匹配
12.1 match 12.1.1 基本介绍 Scala中的模式匹配类似于Java中的switch语法,但是更加强大 模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需 ...
- Linux学习笔记之rsync配置
0x00 rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录. ...
- framework7 总结之前遇到的问题和踩过的坑
官网上写的案例比较简单明了,我这里就将我使用时踩过的坑做一个总结,与大家共勉! 最近使用framework,基本全靠浏览官方文档,当然,有遇到了许多的错误,开始不知道哪里出问题也很着急,到最后发现问题 ...
- python基础06--文件操作
1.1 文件操作 1.只读(r,rb) rb以bytes方式读文件 只写(w,wb) 追加(a,ab) r+ 读写 w+ 写读 a+ 追加写读 以什么编码方式储存的文件,就用什么编码方式打开 ...
- vuex简单化理解和安装使用
1.简单化理解 首先你要明白 vuex 的目的 就是为了 集中化的管理项目中 组件所有的 数据状态 (state) 0. 第一步你要明白 , store 的重要性 , store 类似一个中央基站, ...