Mybatis中一对多与多对一

78 阅读1分钟

我们知道,在数据库中避免不了出现一对多和多对一的那种关系,那么我们该如何使用Mybatis来实现这种关系呢?接下来我用emp(员工表)和dept(部门表)来说一下.

1.在对应的javaBean实体类中添加对应的一和多的关系.

image.png

image.png 我们可以知道,emp是"多",dept是"一",那么需要在emp实体类中添加Dept dept成员属性,在dept实体类中添加一个emp属性,并且用List接受,因为一个dept会有多个emp.

2.在对应的xml文档中写好对应的resultMap映射关系

(1)在"一"中去写"多" image.png collection标签是指多的一方,property的值必须和在javaBean实体类中的成员属性名字一致.还有一个注意点,因为都会使用到id字段,可能会出现覆盖的问题,所以可以在后续的sql语句中给id起别名,然后在映射的时候用别名即可.例如这里给t2.id as emp_id,那么在前文id标签映射的时候使用emp_id映射即可.

image.png

(2)在"多"中去写"一"

image.png 同上,这里使用的不再是collection标签,而是association标签,里面与上面类似,在使用id字段也最好起别名再映射.