mybatis一对多的实现(一个老师教许多学生)
搭建环境在上一篇已经实现。连接如下
https://editor.youkuaiyun.com/md/?articleId=108867516
1.学生的实体类
package com.lty.pojo;
import lombok.Data;
@Data
public class Student {
private int id;
private String name;
private int tid;
}
2.老师的实体类
package com.lty.pojo;
import lombok.Data;
import java.util.List;
@Data
public class Teacher {
private int id;
private String name;
//一个老师对应多个学生(是一对多的方式 集合存在用collect)
private List<Student> student;
}
3.老师的接口
package com.lty.dao;
import com.lty.pojo.Student;
import java.util.List;
public interface StudentMapper {
}
4.老师的接口
package com.lty.dao;
import com.lty.pojo.Teacher;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface TeacherMapper {
//获取老师
//获取指定老师下的所有学生以及老师的信息
Teacher getTeacher(@Param("tid") int id);
}
5.老师接口对应的映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lty.dao.TeacherMapper">
<select id="getTeacher" resultMap="TeacherStudent">
select t.id tid ,t.name tname,s.name sname,s.id sid
from teacher t,student s
where t.id=s.tid
and t.id=#{tid}
</select>
<resultMap id="TeacherStudent" type="Teacher">
<result column="tid" property="id"/>
<result column="tname" property="name"/>
<collection property="student" ofType="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="tid" column="tid"/>
</collection>
</resultMap>
</mapper>
6.测试
@Test
public void test02(){
SqlSession session = MybatisUtils.getSession();
TeacherMapper mapper = session.getMapper(TeacherMapper.class);
Teacher teacher = mapper.getTeacher(1);
System.out.println(teacher);
session.close();
}
7.运行安全