MyBatis -----结果集映射(二)
结果集映射
select * from user where id = #{id};
多对一 关联 - association - JavaType
Student表
@Data@AllArgsConstructor@NoArgsConstructorpublic class Student { private int id; private String name; private Teacher teacher;}
Teacher表
@Data@AllArgsConstructor@NoArgsConstructorpublic class Teacher { private int id; private String name;}
按照结果嵌套处理 【推荐】
select s.id ,s.name ,t.name , t.id from student s, teacher t where s.tid = t.id
按照查询嵌套处理
<!-- --> <!-- --> select * from student; select * from teacher where id = #{tid};
一对多 集合 - collection - ofType
Student表
@Datapublic class Student { private int id; private String name; private int tid;}
Teacher表
@Datapublic class Teacher { private int id; private String name; //一个老师拥有多个学生 private List students;}
按照结果嵌套处理 【推荐】
select s.id sid, s.name sname, t.name tname,t.id tid from student s,teacher t where s.tid = t.id and t.id = #{tid}
按照查询嵌套处理
select * from mybatis.teacher where id = #{tid} select * from mybatis.student where tid = #{tid}
小结
-
关联 - association 【多对一】 JavaType
-
集合 - collection 【一对多】 ofType
-
javaType & ofType
-
JavaType 用来指定实体类中属性的类型
-
ofType 用来指定映射到List或者集合中的 pojo类型,泛型中的约束类型!
-
注意点:
-
保证SQL的可读性,尽量保证通俗易懂
-
注意一对多和多对一中,属性名和字段的问题!
-
如果问题不好排查错误,可以使用日志 , 建议使用 Log4j