您现在的位置是:首页 > 正文

MyBatis-5 多表查询

2024-02-29 11:56:59阅读 0

多表查询

​ 实际中,以账户和用户为例:

​ 一个学生可以学多门课

​ 一门课可以有多个学生学

一对一

主表实体类中,包含从表的引用

​ 例子:(假设一个学生只学一门课)在学生实体类中,添加 "class类"属性,并提供set,get方法。

​ 在映射接口配置中,定义student和class 的封装

​ 标签:association,一对一关系映射,配置封装user的内容

​ 属性:JavaType,封装的Java对象类型。

​ 代码:

<resultMap id="StudentClassMap" type="com.lijie.bean.Student_05">
    <id property="sno" column="sno"></id>
    <result property="sname" column="sname"/>
    <result property="sex" column="sex"/>
    <result property="date" column="date"/>
    <result property="address" column="address"/>
    <association property="class_05" column="cno" javaType="com.lijie.bean.Class_05">
        <result property="cno" column="cno"/>
        <result property="cname" column="cname"/>
    </association>
</resultMap>
一对多

主表实体类中,包含从表的引用集合

例子:(一个学生学多门课)在学生实体类中,添加 class类的集合属性,并提供set,get方法。

​ 在映射接口配置中,定义student和class 的封装

​ 标签:collection,一对多关系映射,配置封装的集合

​ 属性:ofType,集合内容的对象类型。若没有起别名,需填写全限定类名

代码:

<select id="findClassStudent" resultMap="StudentClassMap">
    SELECT student.*,class.* FROM sc,student,class WHERE sc.sno=student.sno  AND sc.cno=class.cno
</select>


<!--一对多关系映射-->
    <resultMap id="StudentClassMap" type="Student">
        <id property="sno" column="sno"></id>
        <result property="sname" column="sname"/>
        <result property="sex" column="sex"/>
        <result property="date" column="date"/>
        <result property="address" column="address"/>
        <collection property="class_05" ofType="Class">
            <result property="cno" column="cno"/>
            <result property="cname" column="cname"/>
        </collection>
    </resultMap>

多对多

主表实体类中,包含从表的引用集合,个人认为本质上与一对多一致。

例子:(一个学生学多门课)在学生实体类中,添加 class类的集合属性,并提供set,get方法。

​ 在映射接口配置中,定义student和class 的封装

​ 标签:collection,一对多关系映射,配置封装的集合

​ 属性:ofType,集合内容的对象类型。若没有起别名,需填写全限定类名

代码:

<select id="findClassStudent" resultMap="StudentClassMap">
    SELECT student.*,class.* FROM sc,student,class WHERE sc.sno=student.sno  AND sc.cno=class.cno
</select>


<!--一对多关系映射-->
    <resultMap id="StudentClassMap" type="Student">
        <id property="sno" column="sno"></id>
        <result property="sname" column="sname"/>
        <result property="sex" column="sex"/>
        <result property="date" column="date"/>
        <result property="address" column="address"/>
        <collection property="class_05" ofType="Class">
            <result property="cno" column="cno"/>
            <result property="cname" column="cname"/>
        </collection>
    </resultMap>

网站文章

  • 1、验证1101序列(Moore)

    1、验证1101序列(Moore)

    注意:如果状态转移方程不显然,则需严格按照设计状态-状态化简-状态转移真值表-状态转移方程过程进行来得出转移方程,相关内容在数电-同步时序电路。用使用状态机验证1101序列,注意:允许重复子序列。触发器(很好理解,最多的情况就是储存全部信息,每位一个。用Moore型状态机验证1101序列。: D触发器灵活得出状态转移方程。位序列进行检测,则最多需要。以四位为例,于是有D触发器。

    2024-02-29 11:56:52
  • Python常用模块

    Python常用模块

    random 模块https://www.cnblogs.com/liangmingshen/p/8909376.html

    2024-02-29 11:56:44
  • java基础10题

    java基础10题

    2024-02-29 11:56:15
  • 资源限制类题目技巧大全

    即使有些碰撞,一个文件中的数据多于1千万条,但没有关系。因为在前面我们算过,一个文件真正可以存的数据条数是1亿两千500条。1千万条只是比较保守的一个数,因此一个文件超了1千万条数据也不会有什么,也不...

    2024-02-29 11:56:09
  • redis专题:redis键值设计、性能优化以及redis连接池配置

    文章目录1.redis键值设计①:key名设计②:value设计2. 命令使用3. redis连接池配置参数设计 1.redis键值设计 redis合理的键值设计,可以增加可读性和可管理性,特别在大型...

    2024-02-29 11:55:48
  • maven项目,正常在main方法中运行正常,部署到tomcat运行时就抛出class not found异常...

    Eclipse中Maven项目无法在Tomcat中运行  出现ClassNotFound异常  看看异常信息,都是Maven依赖包中的类,项目-&gt;属性-&gt;Deployment Assembly-&gt;Add-&gt;Java Build Path Entries-&gt; Maven Dependencies -&gt; Finish -&gt;OK  再次运行,...

    2024-02-29 11:55:18
  • Python高效编程技巧,让你的代码更优雅

    Python编程语言简介 Python是一种高级编程语言。和其他编程语言相比Python的语法更加简单、清晰,易于理解和上手。同时Python还提供了很多常用的标准库和第三方库,方便开发者快速开发出高...

    2024-02-29 11:55:06
  • Java 限流方案

    限流基本概念QPS和连接数控制传输速率黑白名单分布式环境限流方案常用算法令牌桶算法漏桶算法滑动窗口常用的限流方案Nginx限流中间件限流限流组件合法性验证限流Guawa限流网关层限流从架构维度考虑限流设计具体的实现限流的手段:Tomcat限流。

    2024-02-29 11:54:37
  • [RK3399][Android7.1] 调试笔记 --- 添加重启命令恢复出厂设置

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83改动:diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsiindex 1759a91..5bf6cb9 100644--- a/arch/arm...

    2024-02-29 11:54:29
  • Selenium--多表单frame切换

    web应用中会遇到frame或者iframe表单嵌套页面的情况,对于表单内嵌页面上的元素无法直接进行定位,需要将当前定位的主体切换为frame或iframe表单的内嵌页面中才可定位元素。

    2024-02-29 11:54:21