比如同时有User.java和Card.java两个类

User.java如下:

public class User{

private Card card_one;

private List<Card> card_many;

}

在映射card_one属性时用association标签, 映射card_many时用collection标签.

所以association是用于一对一和多对一,而collection是用于一对多的关系

下面就用一些例子解释下吧

association-一对一

人和身份证的关系

下面是pojo

 
1
2
3
4
5
{
;
;
//省略set和get方法.
}

 

 
1
2
3
4
5
6
7
8
9
{
;
;
;
;
//人和身份证是一对一的关系
;
//省略set/get方法.
}

下面是mapper和实现的接口

 
1
2
3
4
5
6
7
;
 
;
 
{
;
}

 

 
1
2
3
4
5
6
7
8
9
?>
mapper
>
>
>
#{id}
>
>

 

 
1
2
3
4
5
6
7
;
 
;
 
{
;
}

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
?>
mapper
>
>
>
>
>
>
>
>
>
>
>
#{id}
>
>

PersonMapper.xml 还使用association的分步查询。

同理多对一,也是一样

只要那个pojo出现private Card card_one;

即使用association


collection 一对多和association的多对一关系

学生和班级的一对多的例子

pojo类

 
1
2
3
4
5
6
7
8
9
10
11
12
13
;
 
;
;
 
{
;
;
;
//班级与学生是一对多的关系
;
//省略set/get方法
}

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
;
 
;
 
{
;
;
;
;
//学生与班级是多对一的关系
;
//省略set/get方法
}

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
?>
mapper
>
>
>
#{id}
>
>
>
>
>
>
>
>
>
>
>
>
>
>

 

 
1
2
3
4
5
6
7
;
 
;
 
{
;
}

ClazzMapper使用到了集合-collection 即为一对多,一个班级面对多个学生

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
?>
mapper
>
>
>
#{id}
>
>
#{id}
>
>
>
>
>
>
>
>
>
>
>
>
>

 

 
1
2
3
4
5
6
7
;
 
;
 
{
;
}

StudentMapper则是与班级为多对一关系,所以使用了关联-association


嗯,希望我以后又不记得二者的关系时,能感谢现在总结的自己

相关文章: