此demo实现 学生实体及老师实体之间的联表查询
多个学生对应一个老师
实现的目标:查询多个学生对应的老师信息及学生信息
项目结构:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KGUGLt73-1609228713814)(C:\Users\hq\AppData\Roaming\Typora\typora-user-images\image-20201229145219512.png)]
pojo层实体类
Student.java
/*
* 多个学生对应一个老师
* */
public class Student {
private int id;
private String name;
private Teacher teacher;
public Student() { }
public Student(int id, String name, Teacher teacher) {
this.id = id;
this.name = name;
this.teacher = teacher;
}
public int getId() {
return id;
}
public void setId(int 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 +
'}';
}
}
Teacher.java
import java.util.List;
//一个老师对应多个学生
public class Teacher {
private int id;
private String name;
public Teacher() { }
public Teacher(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
Mapper层
TeacherMapper接口
public interface StudentMapper {
// 获取学生的老师 多对一
List<Student> getStudentTeacher();
}
TeacherMapper.xml
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hq.mapper.StudentMapper">
<select id="getStudentTeacher" resultMap="StudentTeacher">
select s.id sid,s.name sname,t.name tname
from student s,teacher t where s.tid = t.id
</select>
<resultMap id="StudentTeacher" type="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<association property="teacher" javaType="Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
</mapper>
测试代码:
@Test
public void getAllTeacher(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
List<Student> allTeacher = studentMapper.getStudentTeacher();
for (Student stu : allTeacher) {
System.out.println(stu);
}
}catch (Exception e){
System.out.println(e);
}finally {
sqlSession.close();
}
}
测试结果: