mybatis懒加载
懒加载介绍
- 什么是懒加载:通俗的讲就是按需加载,我们需要什么的时候再去进行什么操作。先从单表查询,需要时再去从关联表去关联查询,能大大提高数据库性能,并不是所有场景下使用懒加载都能提高效率。
- Mybatis懒加载:resultMap里面的association、collection有延迟加载功能
需求
现在有两张表:emp(员工表)、dept(部门表)
查询所有部门信息,有时候需要查询部门下的用户信息
分析
方法一:我们直接关联查询出所有员工和部门信息
select * from emp e,dept d where e.dept=d.dept
①如果数据量很大,这种关联查询肯定比较耗时
②需求1是有时候需要员工表的信息,需求2是有时候需要部门表的信息,并不一定需要,但是我们也查了,程序进行了多余的耗时操作。
方法二:分步查询
首先查询出所有部门信息,然后如果需要员工的信息,我们再根据查询的部门信息去关联员工信息
//查询所有的部门信息,包括部门编号
select * from dept
//如果需要员工信息,我们再根据上一步查询的部门编号查询员工信息
select * from emp where deptno=#{
deptno}
①这里两步都是单表查询,执行效率比关联查询要高的多
②分为两步,如果我们不需要关联员工或者部门的信息,就不执行第二步,程序没有进行多余的操作。
这种方法就是mybatis的懒加载。
Mybatis懒加载实例
①在Mybatis核心配置文件中开启懒加载(延时加载)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="mysqldb.properties"/>
<settings>
<!-- 自动行为映射配置 -->
<setting name="autoMappingBehavior" value="FULL"/>
<!--日志指定 -->
<setting name="logImpl" value="LOG4J"/