测试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编辑器 ...
随机推荐
- PyInstaller把Python脚本打包成可执行程序教程
一.说明 一直以来都有把.py文件打包成.exe文件的想法,但总是不够强烈,每次拖着拖着就淡忘了. 昨天帮硬件部门的同事写了个脚本,然后今天下午的时候,他问有没有办法把脚本打包成可执行文件,这样方便以 ...
- 第九节:ASP.NET Core 中多环境的使用
一. 环境相关配置 1. 说明 ASP.NET Core 在应用启动时读取环境变量 ASPNETCORE_ENVIRONMENT, ASPNETCORE_ENVIRONMENT 可设置为任意值,但框架 ...
- Java学习:可变参数
可变参数 可变参数:是JDK1.5 之后出现的新特性 使用前提: 当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数. 使用格式:定义方法时使用 修饰符 返回值类型 方法名(数 ...
- MQTT --- 操作行为
会话状态 为实现QoS等级1和QoS等级2协议流,客户端和服务端需要将状态与客户标识符相关联,这被称为会 话状态.服务端还将订阅信息存储为会话状态的一部分.会话可以跨越一系列的网络连接.它持续到最新的 ...
- java中static和final修饰符
static和final修饰符 一.static修饰符 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. ...
- mvn clean -U -e -B -X的作用 查看详细出错信息
https://blog.csdn.net/u014515854/article/details/79820497 在持续集成服务器上使用怎样的 mvn 命令集成项目,这个问题乍一看答案很显然 ...
- 当Windows操作系统关机时,不会执行Windows Service的OnStop方法(转载)
Windows Service OnStop when computer shutdown 问: I'm writing a Windows Service in C#. I want to take ...
- Vertx与Spring配合完成DML操作
服务启动: public static void main( String[] args ) { ApplicationContext context = new AnnotationConfigAp ...
- Schnorr签名介绍
Schnorr签名介绍 来源 https://panzhibiao.com/2019/02/28/schnorr-sigature/ https://github.com/bitcoin/bitcoi ...
- 第一阶段:Java基础 1.JAVA开发介绍---5. Java的注释,标识符、标识符的命名规范
1.java注释 java中有三种注释方式,单行注释,多行注释,文档注释. (1).单行注释:快捷键Ctrl+/再次按撤销注释, (2).多行注释:Ctrl+shift+/ 撤销Ctrl+shift+ ...