mybatis学习笔记9----多表查询一对多

本文介绍了MyBatis中一对多查询的实现,通过collection映射处理一对多关系,对比了一对多和多对一查询的区别,强调了association和collection在映射时的不同,并探讨了子查询的应用。
摘要由CSDN通过智能技术生成

11.一对多处理查询—集合—使用list集合—collection映射

1.Student.java和Teacher.java

import lombok.Data;

import java.util.List;

@Data
public class Teacher {
   
private  int id;
private String name;
//老师这里是集合,所以在后面映射需要用collection
private List<Student> students;
}



import lombok.Data;

@Data
public class Student {
   
    private int id;
    private String name;
    private  int tid;
}


2.StudentMapper.java和TeacherMapper.java

public interface StudentMapper {
   
}



import com.kuang.pojo.Teacher;
import org.apache.ibatis.annotations.Param;


import java.util.List;


public interface TeacherMapper {
   

    //获取所有老师,这里可以注解开发,也可以xml配置文件
    public List<Teacher> getTeacher();

    //获取给定老师id,获取老师下的所有学生信息以及老师信息,一对多
    Teacher getTeachers(@Param("tid") int id);

    //方式二,
    Teacher getTeachers2(@Param("tid") int id);
}


3.MybatisUtils.java和mybatis-config.xml,db.properties同上

4.重点,一对多查询的实现

TeacherMapper.xml

<mapper namespace="com.kuang.dao.TeacherMapper">
    <!--方式一,根据结果集查询,因为前面类中定义的是集合,所以,这里映射要用collection-->
    <select id="getTeachers" resultMap="TeacherStudent">
    select t.id tid,t.name tname,s.id sid,s.name sname from teacher t,student s
     where t.id=s.tid and t.id=#{tid}
    </select>

    <!--复杂的属性,我们需要单独处理,
    对象:association,
    集合:collection
    javaType是属性的类型,
    集合中的泛型,我们用ofType来解决
    -->
    <resultMap id="TeacherStudent" type="Teacher">
        <result property="id" column="tid"></result>
        <result property="name" column="tname">
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值