Mybatis“ 多对一“,“ 一对多“查询

本次以老师和学生两个对象和数据表举例,数据表数据如下:
在这里插入图片描述
特别说明:学生数据表里面的tid属性与老师数据表里面的id属性是关联关系。

1、多对一:

多个学生对应或关联一个老师,通过查询学生,并且能找到他们所关联的老师,站在学生的角度是”多对一“的关系。

1)、编写学生的实体类:

package com.bjpowernode.domian;

/**
 * 多对一
 */
public class Student {

    private Integer id;
    private String name;

    //多个学生关联一个老师
    private Teacher teacher; // --->  private Integer tig;关联的是一个老师的对象

    public Student(){

    }

    public Student(int id,String name){
        this.id = id;
        this.name = name;
    }


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", teacher=" + teacher +
                '}';
    }
}

2)、编写查询接口。

查询所有学生的信息,以及学生所对应的老师信息
在这里插入图片描述
3)、编写Mapper.xml文件里面的查询sql语句。

特别注意:

如果我们在Mybatis框架里面按照在数据库上写查询的sql语句的逻辑来写,那么所查询出来的结果很有可能出现以下情况,学生所关联的老师,那一行的查询结果为null,原因很有可能是数据表里面的字段名和实体类里面的属性名不一致导致的。

在这里插入图片描述
解决方案:

使用

resultMap 结果集映射(解决实体类属性名称和数据表字段名不一致问题):
在这里插入图片描述
4)、测试
在这里插入图片描述
2、一对多:

一个老师,包含多个学生,他们之间是集合的关系,站在老师的角度就是”一对多“的关系。

1)、编写老师的实体类。

package com.bjpowernode.domian;

/**
 * 一对多
 */
import java.util.List;

public class Teacher {

    private Integer id;
    private String name;

    //一个老师包含多个学生,所以传过来的是一个Student集合
    private List<Student> students;

    public Teacher(){
    }

    public Teacher(Integer id, String name, List<Student> students) {
        this.id = id;
        this.name = name;
        this.students = students;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", students=" + students +
                '}';
    }
}

2)、编写查询接口。

获取指定老师的id查询他所包含的所有学生以及该老师的相关信息

在这里插入图片描述
3)、编写Mapper.xml文件里面的查询sql语句。
在这里插入图片描述
4)、测试
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值