千家信息网

MyBatis中怎么实现一对多查询和多对一查询

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇"MyBatis中怎么实现一对多查询和多对一查询"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一
千家信息网最后更新 2025年11月15日MyBatis中怎么实现一对多查询和多对一查询

这篇"MyBatis中怎么实现一对多查询和多对一查询"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"MyBatis中怎么实现一对多查询和多对一查询"文章吧。

1、多对一

1、1环境搭建

数据库

CREATE TABLE teacher (id INT(10) NOT NULL,NAME VARCHAR(64) DEFAULT NULL,PRIMARY KEY (id),)ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO teacher (id ,NAME) VALUES (1,'罗老师');CREATE TABLE student (id INT(10) NOT NULL,NAME VARCHAR(64) DEFAULT NULL,tid INT(10) DEFAULT NULL,PRIMARY KEY (id),KEY fktid (tid),CONSTRAINT fktid FOREIGN KEY (tid) REFERENCES teacher (id))ALTER TABLE student ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO student (id ,NAME ,tid) VALUES (1,'小明',1);INSERT INTO student (id ,NAME ,tid) VALUES (2,'小红',1);INSERT INTO student (id ,NAME ,tid) VALUES (3,'小张',1);INSERT INTO student (id ,NAME ,tid) VALUES (5,'小罗',1);

MyBatis.xml配置

                                                                                                                                                                                            

1、2编写实体类、

学生·

@Datapublic class Student {    private int id;    private String name;    private Teacher teacher;}

老师·

@Datapublic class Teacher {    private int id;    private String name;}

1、3编写接口方法

public interface  StudentMapper {    List getStudentList();    List getStudentList1();}

1、4编写Mapper

                                                                                                        

1、5实现

package com.Google.Dao;import com.Google.pojo.Student;import com.Google.units.sqlSessionFactory;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.List;public class StudentMapperText {    @Test    public void getStudent(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);        List studentList = mapper.getStudentList();        for (Student student : studentList) {            System.out.println(student);        }        sqlSession.close();    }    @Test    public void getStudent1(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);        List studentList = mapper.getStudentList1();        for (Student student : studentList) {            System.out.println(student);        }        sqlSession.close();    }}

1、6运行结果

Student(id=1, name=小明, teacher=Teacher(id=0, name=罗老师))
Student(id=2, name=小红, teacher=Teacher(id=0, name=罗老师))
Student(id=3, name=小张, teacher=Teacher(id=0, name=罗老师))
Student(id=4, name=小王, teacher=Teacher(id=0, name=罗老师))
Student(id=5, name=小罗, teacher=Teacher(id=0, name=罗老师))

2、一对多

2、1环境搭建和一对多一样

2、2编写实体类

@Datapublic class Student {    private int id;    private String name;    private int tid;}
@Datapublic class Teacher {    private int id;    private String name;    //一个老师拥有多个学生,给老师创建一个学生集合    private List student;}

2、3编写接口的方法

public interface TeacherMapper {    Teacher getTeacher(@Param("tid") int id);    Teacher getTeacher1(@Param("tid") int id);}

2、4编写Mapper配置

                                                                                                                                

2、5实现

public class TeacherMapperText {    @Test    public void getTeacher(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);        Teacher teacher = mapper.getTeacher(1);        System.out.println(teacher);        sqlSession.close();    }    @Test    public void getTeacher1(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);        Teacher teacher1 = mapper.getTeacher1(1);        System.out.println(teacher1);        sqlSession.close();    }}

2、6运行结果

Teacher(id=1, name=罗老师, student=[Student(id=1, name=小明, tid=1), Student(id=2, name=小红, tid=1), Student(id=3, name=小张, tid=1), Student(id=4, name=小王, tid=1), Student(id=5, name=小罗, tid=1)])

以上就是关于"MyBatis中怎么实现一对多查询和多对一查询"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0