一对多:
按照结果进行嵌套处理
主要是对结果映射的构建
建两个表,student teacher
pojo类如下
//Student类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private String id;
private String name;
private String gender;
private String age;
private int tid;
private Teacher teacher;
}
//teacher类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Teacher {
private int id;
private String name;
private List<Student> students;
}
接口方法:
import java.util.List;
public interface StudentMapper {
public List<Student> getStudent();
public List<Student> getStudent2();
}
//teacherMapper类
public interface TeacherMapper {
public List<Teacher> getTeacher(@Param("tid") int id);
}
映射文件
studentmapper.xml
<!-- ================================-->
<!-- 按照结果嵌套处理-->
<select id="getStudent2" resultMap="studentTeacher2">
select s.id sid,s.name sname,s.gender sgender,s.age sage,s.tid stid,t.name tname
from student s,teacher t
where s.tid=t.id
</select>
<resultMap id="studentTeacher2" type="com.grandzio.pojo.Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="age" column="sage"/>
<result property="gender" column="sgender"/>
<!-- 复杂的属性,需要单独处理,
对象:association
集合:collection
-->
<association property="teacher" column="tid" javaType="com.grandzio.pojo.Teacher">
<result property="name" column="tname"/>
<result property="id" column="stid"/>
</association>
</resultMap>
teachermapper.xml
<mapper namespace="com.grandzio.dao.TeacherMapper">
<select id="getTeacher" resultMap="teacherStudent">
select s.id sid,s.name sname,s.gender sgender,s.age sage,s.tid stid,t.name tname
from student s,teacher t
where s.tid=t.id and t.id = #{tid}
</select>
<resultMap id="teacherStudent" type="com.grandzio.pojo.Teacher">
<result property="name" column="tname"/>
<result property="id" column="stid"/>
<!-- 集合中的泛型信息,使用ofType获取 -->
<collection property="students" ofType="com.grandzio.pojo.Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="age" column="sage"/>
<result property="gender" column="sgender"/>
</collection>
</resultMap>
1、关联:association [多对一]
2、集合:collection 【一对多】
3、JavaType & ofType
javaType 用来指定实体类中属性的类型
ofType 用来指定映射到List或者集合中的pojo类型,泛型中的约束类型