全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

mybatis一对多查询功能

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

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

    很显然,如果用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的记录。具体解决办法,开始的时候就说了,这里就不再赘述了。

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

  

    定义resultMap

<!-- 订单及订单明细的resultMap
  使用extends继承,不用再重复用户的映射
   -->
  <resultMap type="cn.itcast.mybatis.po.Orders" id="dinxtends="OrdersUserResultMap">
    <!-- 订单信息 -->
    <!-- 用户信息 -->
    <!-- 使用extends继承,不用在中配置订单信息和用户信息的映射 -->
    <!-- 订单明细信息
    一个订单关联查询出了多条明细,要使用collection进行映射
    collection:对关联查询到多条记录映射到集合对象中
    property:将关联查询到多条记录映射到cn.itcast.mybatis.po.Orders哪个属性
    ofType:指定映射到list集合属性中pojo的类型
     -->
     <collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
       <!-- id:订单明细唯 一标识
       property:要将订单明细的唯 一标识 映射到cn.itcast.mybatis.po.Orderdetail的哪个属性
        -->
       <id column="orderdetail_id" property="id"/>
       <result column="items_id" property="itemsId"/>
       <result column="items_num" property="itemsNum"/>
       <result column="orders_id" property="ordersId"/>
     </collection>
  </resultMap>

      

  mapper  

  

  总结

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

以上所述是小编给大家介绍的mybatis一对多查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# mybatis  # 一对多查询  # Mybatis中的高级映射一对一、一对多、多对多  # 解决mybatis plus 一对多分页查询问题  # MybatisPlus实现对象嵌套关联查询一对多List集合查询  # MyBatisPlus 一对多、多对一、多对多的完美解决方案  # MyBatis如何实现多表查询(多对一、一对多)  # 解决mybatis一对多关联查询多条数据只显示一条的问题  # mybatis 一对一、一对多和多对多查询实例代码  # Mybatis一对多与多对一查询处理详解  # MyBatis一对多关系映射方式小结  # 多条  # 多个  # 基础上  # 小编  # 就在  # 出了  # 就有  # 在此  # 说了  # 又有  # 这就  # 给大家  # 这个时候  # 解决问题  # 一个问题  # 要将  # 淘宝  # 我们应该  # 这是因为  # 会为 


相关文章: 如何构建满足综合性能需求的优质建站方案?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  建站之星如何快速解决建站难题?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  哈尔滨网站建设策划,哈尔滨电工证查询网站?  建站之星图片链接生成指南:自助建站与智能设计教程  Swift中switch语句区间和元组模式匹配  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  详解jQuery中基本的动画方法  寿县云建站:智能SEO优化与多行业模板快速上线指南  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何在IIS7上新建站点并设置安全权限?  建站168自助建站系统:快速模板定制与SEO优化指南  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  建站之星如何通过成品分离优化网站效率?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何快速搭建二级域名独立网站?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  公众号网站制作网页,微信公众号怎么制作?  黑客入侵网站服务器的常见手法有哪些?  如何在阿里云高效完成企业建站全流程?  如何规划企业建站流程的关键步骤?  如何打造高效商业网站?建站目的决定转化率  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  临沂网站制作公司有哪些,临沂第四中学官网?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何获取上海专业网站定制建站电话?  linux top下的 minerd 木马清除方法  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何选择高效响应式自助建站源码系统?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  建站之星代理费用多少?最新价格详情介绍  微信推文制作网站有哪些,怎么做微信推文,急?  北京网站制作的公司有哪些,北京白云观官方网站?  金*站制作公司有哪些,金华教育集团官网?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何解决ASP生成WAP建站中文乱码问题?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何续费美橙建站之星域名及服务?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  定制建站方案优化指南:企业官网开发与建站费用解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。