MyBatis关联查询、多条件查询

本文详细介绍了MyBatis中的一对一和一对多关联查询的实现方式,包括数据库表设计、实体类创建、mapper接口与XML配置。通过嵌套结果和嵌套查询两种方式,解析了如何在查询时处理重复数据和执行多次查询。同时总结了resultType和resultMap在关联查询中的应用,帮助理解MyBatis高级映射的原理。
摘要由CSDN通过智能技术生成

MyBatis关联查询、多条件查询

1、一对一查询

         任务需求;

                   根据班级的信息查询出教师的相关信息

        

1、数据库表的设计

         班级表:

                  

 

         教师表:

                  

 

2、实体类的设计

         班级表:

public class Classes {

9     //定义实体类的属性,与class表中的字段对应

10     private int id;            //id===>c_id

11     private String name;    //name===>c_name

13     /**

14      * class表中有一个teacher_id字段,所以在Classes类中定义一个teacher属性,

15      * 用于维护teacher和class之间的一对一关系,通过这个teacher属性就可以知道这个班级是由哪个老师负责的

16      */

17     private Teacher teacher;

         教师表:

public class Teacher {
      
9     //定义实体类的属性,与teacher表中的字段对应
10     private int id;            //id===>t_id
11     private String name;    //name===>t_name

3、定义mapper接口

package com.ipcopyright.dao.read;

public interface TeacherDaoR {

     // 级联查询班级信息带教师信息

     public Classes fintClassJoinTeacher(int id);

     //嵌套查询

     public Classes findclassjointeacher2(int id);

}

 

4、定义mappe.xml接口

方式一:嵌套结果——联表查询
    sql查询语句:SELECT * FROM class c,teacher t WHERE c.teacher_id=t.t_id AND c.c_id=1;
  • 使用嵌套结果来处理重复的联合结果的子集
  • 封装联表查询的数据(去除重复的数据)
   

  <!-- 嵌套结果 -->

  <!-- 联表查询,封装结果子集 -->

  <select id="fintClassJoinTeacher" resultMap="baseresultMap" parameterType="int">

    select * from class c ,teacher t where c.teacher_id = t.t_id and c.c_id = #{id}

  </select>

  <!-- 结果集封装 -->

  <!-- 使用resultMap映射实体类和字段之间的一一对应关系 -->

  <resultMap type="com.ipcopyright.domain.Classes"  id="baseresultMap">

     <id property="id" column="c_id"/>

     <result property="name" column="c_name"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值