版权声明:版权声明:尊重他人劳动成果,转载请注明出处:
http://blog.csdn.net/czd3355/article/details/72599681
1. 项目介绍
本文主要介绍在级联操作中 association,collection 的使用。如果对最基本的级联操作还不是很了解的话,可以参考这篇文章。mybatis 学习记录(4.1)—— 级联操作(无 association 和 collection)
1.1 数据库关系:
- one_grade 表有 id,grade,s_id 字段.其中 s_id 为外键字段。
- stu 表有 id,name,t_id 字段。其中 t_id 为外键字段。
- teacher 表有 id,name 字段
1.2 bean 代码
bean 之间的关系:
一名学生对应一门课程成绩(stu 表和 one_grade 表)
一名班主任可以有多名学生(stu 表和 teacher 表)
- Student.java
public class Student {
private Integer id;
private String name;
private Teacher teacher;
// 省略 get/set 方法
}
- Grade.java
public class Grade {
private int id;
private int grade;
private Student student;
// 省略 get/set 方法
- Teacher.java
public class Teacher {
private String name;
private Integer id;
private List<Student> studentList;
// 省略 get/set 方法
}
项目准备已经完成了,现在开始进入正题 —— 级联操作。
2. mybatis 级联操作
首先我们先来看下 association 和 collection 的应用场景分别是什么样的,如下所示。每种关联都可以有两种方式去实现。
- association:一对一的关联
- 关联结果查询(resultMap)
- 关联嵌套查询(select)
- collection:一对多的关联
- 关联结果查询(resultMap)
- 关联嵌套查询(select)
注意:在使用 association 时,property 属性值是一个 POJO 对象。而在使用 collection 时,property 属性值是一个 List 集合
每一种操作方法我都写上了对应的关键代码,下面我们来具体看一下这两种操作的用法。
3. association 的使用
3.1 关联结果查询(resultMap)
- 映射文件(gradeMapper.xml)
<resultMap id="gradeMap" type="com.czd.mybatis02.bean.Grade">
<id property="id" column="g_id"/>
<result property