测试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编辑器 ...
随机推荐
- 词向量实践(gensim)
词向量训练步骤: 分词并去停用词 词频过滤 训练 项目完整地址:https://github.com/cyandn/practice/tree/master/Word2Vec gensim中Word2 ...
- Js迷宫游戏
<!DOCTYPE html> <html> <head> <title>MyHtml.html</title> </head> ...
- [转帖]iostat 命令详解
iostat 命令详解 https://www.jianshu.com/p/5fed8be1b6e8 概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息. iostat属于sysstat软 ...
- java小程序---简陋版多人聊天室
功能需求: 1 每运行一次主函数,创建一个客户端聊天界面; 2 客户端界面分三块,公屏(显示所有客户端发送的信息),私屏(用于输入个人想要发送的信息),发送按钮(点击一次,将客户端信息发送到服务端) ...
- 9. Scala隐式转换和隐式值
9.1 隐式转换 9.1.1 提出问题 先看一个案例演示,引出隐式转换的实际需要=>指定某些数据类型的相互转化 object boke_demo01 { def main(args: Array ...
- 开发dubbo应用程序(二)dubbo注册中心相关概述
1.注册中心概述 在Dubbo微服务体系中,注册中心是其核心组件之一.Dubbo通过注册中心实现了分布式环境中各微服务之间的注册与发现,是各分布式节点之间的纽带.其主要作用如下: 动态加入.一个服 ...
- Java自学-数字与字符串 StringBuffer
Java StringBuffer常见方法 StringBuffer是可变长的字符串 示例 1 : 追加 删除 插入 反转 append追加 delete 删除 insert 插入 reverse 反 ...
- Vue--基础2
目录 Vue--基础2 vue成员获取 分隔符成员 计算属性成员 什么是计算属性 计算属性的用法 注意: 监听属性成员 组件 组件的介绍 组件的优点: 局部组件 全局组件 组件复用的数据隔离 组件之间 ...
- js 递归遍历对象 插入属性 遍历树结构
// 向 info下面 每一项 插入 isShow test() { const _this = this; _this.info.isShow = false; let iteration = fu ...
- ECMA6新增语法(待续...)
块级作用域: ES6允许你使用块级作用域,不过目前大多数的ES6语法只允许在严格模式下使用("use strict” ). 1 let关键字 作用:声明变量,一个花括号就是一个作用域(每个 ...