多对多映射
四张表关联查询。
业务需求:查询用户的信息,以及它所购买商品的订单信息、商品信息
业务分析:通过查询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:
输出结果日志:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNzUmZldjYzAjMxADZ5UjY3YzYwUDMmljMhNjYmlDZ18CX2EzLclDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.png)
总结:
根据上面业务分析,分析表跟表之间的对应关系。一对多关系,就使用collection,一对一关系,就使用association。一层层嵌套,association放在最底层。
实际上多对多的查询是把所有关联的表的信息都查询出来,放到pojo中的对应的List或者某个类中。所以只查询用户信息表User,就会得到要查询的信息,因为这个用户里包含了那些信息。