处理一对多映射关系的两种方式

人工智能21

一对多关系实例:

员工表:

处理一对多映射关系的两种方式

部门表:

处理一对多映射关系的两种方式
员工-部门关系表中,一个部门对应多个员工,想要在部门表中查询出对应的员工信息,就要解决一对多映射关系。

解决方法:在Dept实体类中添加员工的LIst集合

public class Dept {
    private Integer deptId;
    private String deptName;

    //处理一对多的关系
    private List emps;
}

有两种方式解决此问题

1. Collection标签


property:关联的属性

ofType:集合内部元素的类型(List

  Dept getDeptAndEmpByStepByCollection(@Param("deptId") Integer deptId);

        SELECT * FROM t_dept left join t_emp on t_dept.dept_id = t_emp.dept_id WHERE t_dept.dept_id = #{deptId}

2. 分步查询

分别通过两个mapper查询各自的实体类属性,然后通过collection标签关联Emp.

Empmapper

    List getDeptAndEmpByStepTwo(@Param("deptId") Integer deptId);

        select * from t_emp where dept_id = #{dept_id}

DeptMapper


        select * from t_dept where dept_id = #{deptId}

结果:

Preparing: select * from t_dept where dept_id = ? (BaseJdbcLogger.java:137)
Parameters: 2(Integer) (BaseJdbcLogger.java:137)
Total: 1 (BaseJdbcLogger.java:137)
Preparing: select * from t_emp where dept_id = ? (BaseJdbcLogger.java:137)
Parameters: 2(Integer) (BaseJdbcLogger.java:137)
Total: 2 (BaseJdbcLogger.java:137)
Dept(deptId=2, deptName=B, emps=[Emp(empId=2, empName=李四, age=34, gender=男, dept=null), Emp(empId=4, empName=张涛, age=24, gender=男, dept=null)])

Original: https://blog.csdn.net/qq_41950447/article/details/127822825
Author: 明天天明~
Title: 处理一对多映射关系的两种方式