MyBatis_9_select_resultMap_关联查询_collection分步查询&延迟加载

背景:

Employee.java

package com.mybatis.bean;

import org.apache.ibatis.type.Alias;

public class Employee {

    private Integer id;
    private String lastName;
    private String email;
    private String gender;
    private Department dept;
	省略getter/setter/toString()/构造方法
}

Department.java

package com.mybatis.bean;

import java.util.List;

public class Department {

    private Integer id;
    private String departmentName;
    private List<Employee> emps;=注意这个地方

	省略getter/setter/toString()/构造方法
}

问题:

查询部门的时候将部门对应的所有员工信息查询出来

做法1(非分步查询法):

在这里插入图片描述

在这里插入图片描述

做法2(分步查询法):

在EmployeeMapperPlus的接口和映射文件有这个方法

在这里插入图片描述

在这里插入图片描述

在departmentMapper的接口和映射文件是如下方法

在这里插入图片描述

在这里插入图片描述

运行结果:

在这里插入图片描述

tips:

扩展:多列的值传递过去;
    将多列的值封装map传递;
    column="{key1=column1,key2=column2}"
    fetchType="lazy":表示使用延迟加载;
        -lazy:延迟
        -eager:立即

<discriminator javaType=""></discriminator>
    鉴别器:mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为
    封装Employee:
        如果查出的是女生:就把部门信息查询出来,否则不查询
        如果是男生,把last_name这一列的值赋值给email

猜你喜欢

转载自blog.csdn.net/weixin_42036647/article/details/86555795