Mybatis 一对多映射
使用Mybatis实现一对多映射,查询一个学生对应的多个教师的信息。tb_student(teacherId) -> tb_teacher(Id)
1. 新建实体类
Student.java(int id, String name, int age,Teacher teacher)
Teacher.java(int id, String name, String subject)
2. Mappers.java
package com.java1234.mappers;
import com.java1234.model.Student;
public interface StudentMapper {
public Student findStduentById(int stuId);
}
package com.java1234.mappers;
import com.java1234.model.Teacher;
public interface TeacherMapper {
public Teacher findTeacherById(int id);
}
3. Mappers.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明对应的映射接口 -->
<mapper namespace="com.java1234.mappers.StudentMapper">
<select id="findStduentById" parameterType="Integer" resultMap="StudentMap">
select * from tb_student,tb_teacher where tb_student.teacherId=tb_teacher.teaId and id=#{stuId}
</select>
<resultMap type="Student" id="StudentMap">
<id property="id" column="stuId"/>
<result property="name" column="stuName"/>
<result property="age" column="age"/>
<association property="teacher" column="teacherId" select="com.java1234.mappers.TeacherMapper.findTeacherById"/>
</resultMap>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明对应的映射接口 -->
<mapper namespace="com.java1234.mappers.TeacherMapper">
<select id="findTeacherById" parameterType="Integer" resultMap="TeacherMap">
select * from tb_teacher where teaId=#{id}
</select>
<resultMap type="Teacher" id="TeacherMap">
<id property="id" column="teaId"/>
<result property="name" column="teacherName"/>
<result property="subject" column="teacherSubject"/>
</resultMap>
</mapper>
总结一下
在1端配置<accsociation>标签,声明n端接口类中对应的接口。
<association property="teacher" column="teacherId" select="com.java1234.mappers.TeacherMapper.findTeacherById"/>