实现关联表查询

一、 一对一关联(一个班级对应一个老师)

1. 按照结果嵌套查询:使用嵌套结果映射来处理重复的联合结果的子集封装联表查询的数据(去除重复的数据)

<select id="getClass" parameterType="int" resultMap="ClassResultMap">
select * from class c,teacher t where c.teacher_id=t.t_id and c.c_id=#{id}
</select>

<resultMap type="Classess" id="ClassResultMap">
<id property="id" column="c_id"/>
<result property="name" column="c_name"/>
<association property="teacher" javaType="Teacher">
<id property="id" column="t_id"/>
<result property="name" column="t_name"/>
</association>
</resultMap>

result嵌套result

2. 嵌套查询:通过执行另外一个SQL映射语句来返回预期的复杂类型

<select id="getClass2" parameterType="int" resultMap="getClass2Map">
select * from class where c_id=#{id}
</select>

<select id="getTeacher" parameterType="int" resultType="Teacher">
select t_id id,t_name name from teacher where t_id=#{id}
</select>

<resultMap type="Classess" id="getClass2Map" >
<id property="id" column="c_id"/>
<result property="name" column="c_name"/>
<association property="teacher" column="teacher_id" select="getTeacher">
</association>
</resultMap>

对象用association,集合用collection
在这里插入图片描述

二、 一对多关联(一个班级对应多个学生)

<select id="getClass" parameterType="int" resultMap="ClassResultMap">
select * from class c,teacher t,student s where c.teacher_id=t.t_id and s.class_id=c.c_id and c.c_id=#{id}
</select>

<resultMap type="Classess" id="ClassResultMap">
<id property="id" column="c_id"/>
<result property="name" column="c_name"/>
<association property="teacher" javaType="Teacher"><!-- 关联 -->
<id property="id" column="t_id"/>
<result property="name" column="t_name"/>
</association>

<collection property="students" ofType="Student"><!-- 一对多 -->
<id property="id" column="s_id"/>
<result property="name" column="s_name"/>
</collection>
</resultMap>

对象用association,集合用collection
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JPA(Java持久化API)是Java用于管理与数据库之间的系映射的一种规范。通过JPA,我们可以轻松实现数据库的交互操作,包括带联表查询。 在JPA中,实现联表查询有以下几个步骤: 1. 定义实体类:首先,我们需要定义用于映射数据的实体类。每个实体类对应数据库中的一张,通过注解标记实体类与数据之间的映射系。 2. 建立系:如果有,我们需要在实体类中定义对应的系。例如,如果A和B之间存在一对多的系,我们需要在实体类A中定义一个属性,用于指向实体类B。 3. 编写查询方法:在定义了实体类和系之后,我们可以编写查询方法来获取带联表查询的结果。可以使用JPQL(Java持久化查询语言)或Criteria API来编写查询语句。 4. 执行查询:通过调用JPA的相应方法,如实体管理器EntityManager的createQuery()方法或CriteriaBuilder的createQuery()方法,来执行查询。执行查询后,将会返回查询结果。 5. 处理查询结果:我们可以通过获取查询结果集,遍历结果集中的对象,访问相属性,并进行进一步的处理或返回给前端。 总的来说,使用JPA实现联表查询的步骤包括定义实体类、建立系、编写查询方法、执行查询和处理查询结果。通过这些步骤,我们可以方便地实现数据库的交互操作,并获取带联表查询的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值