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




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

目录
相关文章
|
9月前
|
SQL Java 数据库连接
MyBatis 的映射关系
MyBatis 核心功能之一是映射关系,支持一对一、一对多和多对多三种 ORM 映射。通过实体类与配置文件结合,开发者可灵活实现数据关联,提升数据库操作效率。
445 4
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`&lt;if&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`&lt;sql&gt;`和`&lt;include&gt;`实现代码复用,优化维护效率。
1188 5
|
SQL XML Java
七、MyBatis自定义映射resultMap
七、MyBatis自定义映射resultMap
432 6
|
XML Java 数据库连接
Mybatis一对一,一对多关联查询
## MyBatis一对一、一对多关联查询详解 MyBatis是一款优秀的持久层框架,提供了灵活的SQL映射功能,支持复杂的数据库操作。本文将详细介绍MyBatis中一对一和一对多关联查询的实现。 ### 一对一关联查询 一对一关联关系指的是一个表中的一条记录与另一个表中的一条记录相关联。例如,一个用户有一个地址信息。 #### 数据库表设计 假设有两个表:`user`和 `address`。 ``` CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE address
584 18
|
XML Java 数据库连接
Mybatis映射关系
简介:本文介绍了MyBatis框架中四种常见的关系映射方式,包括一对一、一对多、多对一及多对多。一对一通过简单属性映射实现;一对多通过在主对象中添加集合属性并使用`&lt;collection&gt;`标签映射子对象集合;多对一则利用`&lt;association&gt;`标签在主对象中映射单个子对象;多对多需引入第三方类,分别在两个主对象中添加对方的集合属性,并通过`&lt;collection&gt;`标签实现映射。
297 32
|
Java 数据库连接 mybatis
MyBatis篇-映射关系(1-1 1-n n-n)
本文介绍了MyBatis中四种常见关系映射的配置方法,包括一对一、一对多、多对一和多对多。**一对一**通过`resultMap`实现属性与字段的映射;**一对多**以用户-角色为例,使用`&lt;collection&gt;`标签关联集合数据;**多对一**以作者-博客为例,利用`&lt;association&gt;`实现关联;**多对多**则通过引入第三方类(如UserForDept)分别在User和Dept类中添加集合属性,并配置对应的`&lt;collection&gt;`标签完成映射。这些方法解决了复杂数据关系的处理问题,提升了开发效率。
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
SQL XML Java
Mybatis中一对一和一对多的处理
这篇文章讲解了在Mybatis中如何处理一对一和一对多的关系映射,包括使用association和collection标签的具体方法。
515 1
|
12月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1630 1
Spring boot 使用mybatis generator 自动生成代码插件
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
1143 0