利用mybatis框架实现一个一对多查询功能-成都快上网建站

利用mybatis框架实现一个一对多查询功能

这篇文章将为大家详细讲解有关利用mybatis框架实现 一个一对多查询功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联是一家专注于成都做网站、网站制作、成都外贸网站建设与策划设计,海州网站建设哪家好?成都创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:海州等地区。海州做网站价格咨询:13518219792

首先,我们还是先给出一个需求:根据订单id查询订单明细——我们知道,一个订单里面可以有多个订单的明细(需求不明确的同学,请留言或者去淘宝网上的订单处点一下就知道了)。这个时候,一个订单,对应多个订单的id。这种需求出现的时候,我们应该如何查询呢?

此时我们的数据模型如下图(左)由于查询用户也是我们的需求,所以就在原有的基础上进行扩展,数据模型如下(右):

利用mybatis框架实现 一个一对多查询功能利用mybatis框架实现 一个一对多查询功能

很显然,如果用resultType的方式去实现的话,是不合理的了。因为我们需要创建一个既有订单又有订单明细的pojo然后呢,我们的mybatis框架会为我们映射出很多个pojo对象(有多少个订单明细就有多少个对象)。

所以我们需要使用resultMap的方式进行处理。解决问题的思路是:在orders类中增加一个订单明细的List字段将list的类型定义为Orderdetail类型。然后通过配置文件,将得到的数据,通过resultMap的collection标签进行映射到list中。

具体实现如下:

  sql语句

确定主查询表:订单表

确定关联查询表:订单明细表

在一对一查询基础上添加订单明细表关联即可。

SELECT 
 orders.*,
 USER.username,
 USER.sex,
 USER.address,
 orderdetail.id orderdetail_id,
 orderdetail.items_id,
 orderdetail.items_num,
 orderdetail.orders_id
FROM
 orders,
 USER,
 orderdetail
WHERE orders.user_id = user.id AND orderdetail.orders_id=orders.id

  问题展示

查询完毕以后,我们发现了一个问题:如图所示,我们的id出现了多条,这是因为数据库中对应的多个订单详情共同使用一个订单id导致的。这就导致了每条记录中都会出现一个orders的记录。具体解决办法,开始的时候就说了,这里就不再赘述了。

利用mybatis框架实现 一个一对多查询功能

在orders中添加list订单明细属性

利用mybatis框架实现 一个一对多查询功能

定义resultMap


  
    
    
    
    
     
       
       
       
       
       
     
  

利用mybatis框架实现 一个一对多查询功能 

mapper  

利用mybatis框架实现 一个一对多查询功能

  总结

其实就是使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中。

关于利用mybatis框架实现 一个一对多查询功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


当前名称:利用mybatis框架实现一个一对多查询功能
本文路径:http://kswjz.com/article/psijss.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流