前言
例如一个老师可以教英语,数学,语文等多个课程,mybatis高级映射是怎么处理的。
具体一对多
1.建教师表teacher
CREATE TABLE `teacher` (
`teacher_no` int(11) NOT NULL,
`teacher_name` varchar(255) NOT NULL,
PRIMARY KEY (`teacher_no`)
)
建课程表class
CREATE TABLE `class` (
`class_no` int(11) NOT NULL,
`class_name` varchar(255) NOT NULL,
`teacher_no` int(11) NOT NULL,
PRIMARY KEY (`class_no`)
)
2.建课程实体类Classes
public class Classes {
private int classNo;//课程号
private String className;//课程名
private int teacherNo;//教师号
public int getClassNo() {
return classNo;
}
public void setClassNo(int classNo) {
this.classNo = classNo;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public int getTeacherNo() {
return teacherNo;
}
public void setTeacherNo(int teacherNo) {
this.teacherNo = teacherNo;
}
}
建教师实体类Teacher
public class Teacher {
private int teacherNo;//教师号
private String teacherName;//教师名
private List<Classes> classes;
public int getTeacherNo() {
return teacherNo;
}
public void setTeacherNo(int teacherNo) {
this.teacherNo = teacherNo;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public List<Classes> getClasses() {
return classes;
}
public void setClasses(List<Classes> classes) {
this.classes = classes;
}
}
3.mybatis映射文件mapper
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mycompany.dao.HelloWorldDao">
<resultMap type="com.mycompany.entity.Teacher" id="getClassMap">
<id property="teacherNo" column="teacher_no"/>
<result property="teacherName" column="teacher_name"/>
<collection property="classes" ofType="com.mycompany.entity.Classes">
<id property="classNo" column="class_no"/>
<result property="className" column="class_name"/>
</collection>
</resultMap>
<select id="getTeacherDetail" parameterType="int" resultMap="getClassMap">
select * from class c, teacher t where c.teacher_no = t.teacher_no and t.teacher_no=#{id}
</select>
</mapper>
4.java代码
List<Teacher> list = helloWorldDao.getName(id);
list中每条Teacher都有可能对应一条Classes或多条classes。
后记
每个老师可能叫多种课程,所有Teacher类中classes用List<Classes>
类型。而在mapper映射文件中用collection 子标签。