天天看点

Mybatis之高级映射【多对多映射】

多对多映射

四张表关联查询。

业务需求:查询用户的信息,以及它所购买商品的订单信息、商品信息

业务分析:通过查询user表,查找到orders,通过orders表查找到对应的orderdetail,通过orderdetail表查到对应items。

user-用户表 、orders-订单表 、orderdetail-订单明细表 、items-商品表

1.创建实体类pojo

a.建立用户表的pojo:一个用户有多个订单,需要在用户表中加入订单列表

b.建立订单表的pojo:一个订单有多个订单明细,订单中需要创建订单的详细信息列表

c.建立订单明细表的pojo:一个订单明细对应一个商品信息,需要创建商品信息属性

d.建立商品表的pojo:

2.编写Mapper.xml:

3.编写Mapper.java:

输出结果日志:

Mybatis之高级映射【多对多映射】

总结:

根据上面业务分析,分析表跟表之间的对应关系。一对多关系,就使用collection,一对一关系,就使用association。一层层嵌套,association放在最底层。

实际上多对多的查询是把所有关联的表的信息都查询出来,放到pojo中的对应的List或者某个类中。所以只查询用户信息表User,就会得到要查询的信息,因为这个用户里包含了那些信息。