MyBatis多对一的映射 一对多的映射

简介: MyBatis多对一的映射 一对多的映射


解决多对一的映射

加入我们在做公司管理系统的时候,我们员工的实体类和部门的实体类肯定是分开创建的呀,但如果此时我们现在想同时查出员工和他所在的部门信息,没有实体类来接收我们的映射,那怎么解决这样的问题呢?




级联属性赋值

第一步:Emp实体类里面添加一个Dept对象:

第二步:EmpMapper接口添加接口方法:


第三步:EmpMapper映射文件:





Assocaition

Assocaition是relaultMap里面自带的一种专门负责处理多对一映射关系的标签,如果说上面这个方法是创建了专门的属性来接收,那这个方法就是专门创建了对象

第一步:Emp实体类里面添加一个Dept对象:


第二步:EmpMapper接口添加接口方法:


第三步:EmpMapper映射文件:

 <!--处理多对一映射关系方式二:association-->
    <resultMap id="empAndDeptResultMapTWO" type="Emp">
        <id property="eid" column="eid"></id>
        <result property="empName" column="emp_name"></result>
        <result property="age" column="age"></result>
        <result property="sex" column="sex"></result>
        <result property="email" column="email"></result>
        <!--
            association:处理多对一的映射关系
            property:需要处理多对的映射关系的属性名
            javaType:该属性的类型
        -->
        <association property="dept" javaType="Dept">
            <id property="did" column="did"></id>
            <result property="deptName" column="dept_name"></result>
        </association>
    </resultMap>
    <!-- Emp getEmpAndDept(@Param("eid") Integer eid);-->
    <select id="getEmpAndDept" resultMap="empAndDeptResultMapTWO">
        select * from t_emp left join t_dept on t_emp.did = t_dept.did where t_emp.eid = #{eid}
    </select>

分步查询

分步分步,顾名思义,将一个原本一下就干完的一件事情,我们分成两件事情来干,相同,那对于查询,我们是不是也可以把一句sql分成两句来执行,例如:


等价于


那么如何实现呢?

第一步:Emp实体类里面添加一个Dept对象:


第二步:EmpMapper接口添加接口方法:


第三步:EmpMapper映射文件:



第四步:DeptMapper接口添加接口方法:


第五步:DeptMapper映射文件:




延迟加载

什么是延迟加载?
看到我们上面提到的分布查询方法,我们是不是都会想,为什么还要那么麻烦?还要多此一举分成两步来解决这个问题呢?直接了当的一句它不香吗?其实你仔细想想如果分成两步,我们不单单只可以用它来解决那一个问题呀,如果我们直接想用其中的某一步方法对于Dept的那步方法来说我们可以直接调用,但对于Emp里面的那个方法他执行的时候不顺带把Dept里面的方法也执行了吗?

延迟加载:当前我们访问哪些信息,我们就会执行哪些sql语句

怎么样开启延迟加载呢?

第一步:配置文件

第二步:映射文件里面association标签里面修改fetchType属性:





解决一对多的映射

当你想查询一个部门的同时,顺带查出这个部门所有成员的信息

Collection

第一步:Dept实体类:

第二步:DeptMapper接口添加接口方法:


第三步:DeptMapper映射文件:




分布查询

第一步:Dept实体类:

第二步:DeptMapper接口添加接口方法:


第三步:DeptMapper映射文件:


第四步:EmpMapper接口添加接口方法:


第五步:EmpMapper映射文件:




总之总结一句话:多对一创对象,一对多创集合

目录
相关文章
|
3月前
|
SQL 缓存 Java
mybatis 一对多查询
mybatis 一对多查询
58 0
|
5天前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
23天前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
38 3
|
2月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
45 3
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
|
2月前
|
Java 数据库连接 mybatis
Mybatis基于注解的一对一和一对多查询
Mybatis基于注解的一对一和一对多查询
31 0
|
2月前
|
SQL Java 数据库连接
Mybatis中一对多mapper配置
Mybatis中一对多mapper配置
23 0
|
3月前
|
算法 BI 数据库
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
101 3
|
3月前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
66 4
|
3月前
|
Java 数据库连接 mybatis
mybatis的一对多
mybatis的一对多