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映射文件:




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

目录
相关文章
|
18天前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
4天前
|
SQL XML Java
Mybatis中一对一和一对多的处理
这篇文章讲解了在Mybatis中如何处理一对一和一对多的关系映射,包括使用association和collection标签的具体方法。
11 1
|
2月前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
3月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
66 3
|
4月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
64 3
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
|
4月前
|
Java 数据库连接 mybatis
Mybatis基于注解的一对一和一对多查询
Mybatis基于注解的一对一和一对多查询
|
4月前
|
SQL Java 数据库连接
Mybatis中一对多mapper配置
Mybatis中一对多mapper配置
|
5月前
|
算法 BI 数据库
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
251 3
|
5天前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
80 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个