Mybatis多表联合查询(多对一和一对多)

本文详细介绍了如何在Mybatis中进行多对一和一对多的联合查询。首先,通过数据表准备和项目层级结构展示了多对一查询的背景,接着阐述了额外查询和关联查询的实现,包括配置延时加载以提高效率。随后,文章转向一对多查询的讨论,同样涵盖准备工作、额外查询和测试环节,强调了在查询中使用collection标签和延迟加载的重要性。
摘要由CSDN通过智能技术生成

1、多对一查询

1 准备工作

(1)数据表准备
这里以员工表和部门表举例,多个员工对应一个部门,通过员工查部门
在多的一方建立外键,来存储部门id号(无需在navicat中设置外键,会影响查询效率)
在这里插入图片描述
在这里插入图片描述
(2)项目层级结构:
在这里插入图片描述
(3)实体类准备
在这里插入图片描述
在这里插入图片描述

2 额外查询

额外sql的查询方式,通过association标签获取到另一个sql语句查询回来的单个结果

  •       property:注入给员工对象中的那个个属性(实体类中的属性名)
          select:发送那一条SQL语句(statement)
          javaType:把SQl语句查询出的结果集封装成哪个类的对象(可以省略)
          column:查询员工的结果集中,那个列的值作为条件去查询关联的对象(数据库中的字段名)*
    

(1)在员工表对应的mapper映射文件中,写入代码:

<resultMap id="selectMap1" type="com.ujy.many2one.bean.Employee">
        <id property="id" column="emp_id"/>
        <result property="name" column="emp_name"/>
        <result property="dep_id.id" column="dep_id"/>
        <!--额外sql的查询方式,通过association标签获取到另一个sql语句查询回来的结果
            association:处理单一的关联对象
            property:注入给员工对象中的那个个属性(实体类中的属性名)
            select:发送那一条SQL语句(statement)
            javaType:把SQl语句查询出的结果集封装成哪个类的对象(可以省略)
            column:查询员工的结果集中,那个列的值作为条件去查询关联的对象(数据库中的字段名)
        -->
        <assoc
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值