MyBatis多表操作延迟加载

延迟加载设置

延迟加载原理

使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用A.getB().getName(),拦截器invoke()方法发现A.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用A.setB(b),于是a的对象b属性就有值了,接着完成A.getB().getName()方法的调用。这就是延迟加载的基本原理。

1.对一操作:

<resultMap id="orderMap" type="order"><result property="id" column="id"></result><result property="ordertime" column="ordertime"></result><result property="total" column="total"></result><!-- 当查询order的时候,mybatis会把查询结果中的uid列中的数据,一个一个拿出来,然后调用               UserMapper.findById方法,查询数据,并把查询到数据,封装到order对象的user属性中。--><association property="user" javaType="user"select="com.demo.dao.UserMapper.findById" column="uid"></association>
</resultMap><!-- 获取所有的order -->
<select id="findAll" resultMap="orderMap">SELECT * FROM orders
</select><!-- 根据用户id,查询对应的所有的订单 -->
<select id="findByUid" resultType="order">SELECT * FROM orders WHERE uid = #{uid}
</select>

2.对多操作:

<resultMap id="userMap" type="user"><result property="id" column="id"></result><result property="username" column="username"></result><result property="password" column="password"></result><result property="birthday" column="birthday"></result><!-- 当查询user的时候,mybatis会把查询结果中的id列中的数据,一个一个拿出来,然后调用                  OrderMapper.findByUid方法,查询数据,并把查询到数据,封装到user对象的orders属性中。--><collection property="orders" ofType="order" select="com.demo.dao.OrderMapper.findByUid" column="id"> </collection>
</resultMap><!-- 获取所有用户 -->
<select id="findAll" resultMap="userMap">select * from user
</select><!-- 根据用户id,获取用户 -->
<select id="findById" resultType="user">select * from user where id = #{id}
</select>

3.延迟加载(懒加载)

什么是延迟加载?

在真正使用数据时才发起查询,不用的时候不查询。按需加载(懒加载)

什么是立即加载?

不管用不用,只要一调用方法,马上发起查询。

<!-- 在SqlMapConfig文件中,开启mybatis的懒加载机制 -->
<settings><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="false"/>
</settings>

Java神鬼莫测之MyBatis多表操作延迟加载(四)相关推荐

  1. 第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  2. java mysql单库多表_第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  3. mybatis多表操作(一对一、一对多、多对多)

    1.获取主键值 1.1使用useGeneratedKeys属性 1.2使用selectKey标签 修改UserMapper 2.分页 3.多表操作(重难点) 3.1一对一 需求:(电商)[一个用户对应 ...

  4. Mybatis多表操作

    文章目录 前言 一.一对一操作 数据库环境 Mapper.xml文件的编写 功能实现 遇到的问题 关于mybatis中起别名的问题 二.一对多操作 数据库环境 Mapper.xml的编写 功能实现 小 ...

  5. Java中数据库的多表操作

    前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文章,会上瘾!,帮你成为更好的自己. 感 ...

  6. java map 查找_Map 查找表操作

    packageseday13;importjava.util.HashMap;importjava.util.Map;/***@authorxingsir * java.util.Map 查找表,Ma ...

  7. Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)

    1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...

  8. openvswitch 流表操作(四十八)

    流表组成 每条流表规则由一些列字段组成,可以分为基础字段.匹配字段和动作字段三部分. 在打印流表时,在流表中还存在一些显示字段,如duration,idle_age等,此处把这些字段也暂时归之于基础字 ...

  9. java B2B2C springmvc mybatis电子商城系统(四)Ribbon

    2019独角兽企业重金招聘Python工程师标准>>> 一:Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix ...

  10. SSM-Mybatis进阶了解(动态SQL和多表操作)

    Mybatis进阶 MyBatis 接口代理方式实现 Dao 层 接口代理方式-实现规则 ​ 传统方式实现 Dao 层,我们既要写接口,还要写实现类.而 MyBatis 框架可以帮助我们省略编写 Da ...

最新文章

  1. 0.基于C++的图像处理算法实现、INTEL CPU上SSE加速、ARM CPU上NEON加速
  2. 最强 Android Studio 使用小技巧和快捷键
  3. 机器学习流行算法一览
  4. 一个讨论:SAP项目实施的顾问,需要花时间去调试代码了解技术细节吗
  5. 表单新增元素与属性(control、placehoulder、list、AutoComplete、pattern、SelectionDirection、indeterminate属性)
  6. REVERSE-PRACTICE-BUUCTF-5
  7. 时间序列预测系统α版本迭代总结
  8. android bundle传递参数,android – 使用bundle将数据从一个活动传递...
  9. 如何针对业务设计架构?——QCon热点专题前瞻
  10. HDU 1010 深搜+奇偶剪枝
  11. ceph分布式存储简介
  12. matlab求抛物问题,高手进,用matlab求解一维抛物方程的初边值问题 - 数学 - 小木虫 - 学术 科研 互动社区...
  13. 好用的在线JSON编辑与格式化工具
  14. oracle---SQLPlus命令操作用法详解
  15. c语言输出n转义字符串,C语言转义字符介绍和示例
  16. Shader攻占笔记(九)结课作业小记
  17. Linux磁盘分区及格式化简介,Linux硬盘分区及格式化学习笔记
  18. 论文翻译——Facial Emotion Recognition using Deep Convolutional Networks
  19. 易基因|疾病研究:DNA甲基化与转录组分析联合揭示吸烟免疫相关疾病的表观遗传机制
  20. 如何查看IDM下载文件的属性

热门文章

  1. 生活随笔:你会狗眼看人低吗?
  2. 数码媒体前股东向华视传媒提告状讼
  3. Docker容器实现SSH连接
  4. JS:1.5,日期(Date)对象
  5. 中概股“回A”政策趋紧 霞客环保终止卖壳
  6. python 回溯法 子集树模板 系列 —— 4、数字组合问题
  7. RedHat 7通过yum安装图形界面
  8. POJ1700 Crossing River
  9. 2.数据结构 --- 线性表
  10. 43.mysqladmin