如果公司允许使用 Mybatis-Plus 进行一对多关联查询,可以在 Service 层中使用 Mybatis-Plus 提供的 Wrapper 来实现。以下是一个使用 Mybatis-Plus Wrapper 进行一对多关联查询的示例:假设我们有两个表 Order 和 OrderItem,其中 Order 表包含 id、order_no、user_id 和 total_amount 字段,OrderItem 表包含 id、order_id、product_id 和 product_price 字段。现在需要查询指定用户的所有订单以及订单对应的所有订单项。OrderService.java 中定义如下查询方法:```java

public List<Order> getOrdersByUserId(Long userId) {QueryWrapper<Order> orderWrapper = new QueryWrapper<>();orderWrapper.eq("user_id", userId);List<Order> orderList = orderMapper.selectList(orderWrapper);QueryWrapper<OrderItem> orderItemWrapper = new QueryWrapper<>();orderItemWrapper.in("order_id", orderList.stream().map(Order::getId).collect(Collectors.toList()));List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemWrapper);Map<Long, List<OrderItem>> orderItemMap = orderItemList.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));orderList.forEach(order -> {List<OrderItem> itemList = orderItemMap.get(order.getId());if (itemList != null) {order.setOrderItemList(itemList);}});return orderList;
}

```

在上述代码中,我们首先使用 QueryWrapper 查询指定用户的所有订单,然后使用查询到的订单列表中的订单 id 构建另一个 QueryWrapper,查询该用户所有订单项。接着,我们使用 Java 8 的 Stream API 将查询到的订单项按订单 id 进行分组,最后将订单项列表设置到对应的订单对象中,返回查询结果。

需要注意的是,该方法中使用了多条 SQL 语句进行查询,可能会导致性能问题,特别是在数据量较大的情况下。如果需要提高性能,可以考虑使用 Join 语句或者缓存等机制进行优化。

使用 Mybatis-Plus 进行一对多关联查询相关推荐

  1. Mybatis多表关联查询(一对多关联查询)

    1.Mybatis一级缓存与二级缓存 目的:提高查询效率,降低数据库查询压力,提升系统整体性能. 一级缓存:默认开启,Session级别,同一个会话内生效. 命中缓存的情况:statementid.S ...

  2. mybatis一对多关联查询两种方式

    mybatis一对多关联查询两种方式 前提: 方式一: 方式二: 前提: 现在有两张表,学生表跟教师表,一个教师对应多个学生 教师表: CREATE TABLE `teacher` (`id` int ...

  3. Mybatis一对多关联查询,返回值Map,字段自动映射

    功能描述 由于查询字段和表名都要支持动态配置,故查询返回值需要为List<Map<String,Object>>,不定义值对象. 查询结果列需要支持自动映射,不配置类属性和数据 ...

  4. mybatis一对多关联查询_Mybatis 一对一、一对多的关联查询 ?

    <mapper namespace="com.lcb.mapping.userMapper"> <!--association 一对一关联查询 --> &l ...

  5. MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)

    MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ...

  6. Mybatis高级应用 多表关联查询

    >以订单商品数据模型为例子: 存在以下四张表,用户表user,用户订单表orders,订单明细表orderdetail,商品表items.四张表之间的关系如下图所示: 下面给出四张表结构的详细定 ...

  7. NHibernate之旅(10):探索父子(一对多)关联查询

    本节内容 关联查询引入 一对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 关联查询引入 在NHibernate中提供了三种查询方式给我们选择:NH ...

  8. mysql的分页怎么不对_mysql一对多关联查询分页错误问题的解决方法

    xml问价中查询数据中包含list,需要使用collection .... .... 这样的查询系统封装的通用分页查询是不对的,所以需要自己sql中加入分页解决 SELECT you.nick_nam ...

  9. Mybatis注解实现一对多关联映射(@Many)

    mybatis注解实现一对多关联映射 @Select("<script> \n" +"\t\tselect a.*,p.punishment_money, p ...

  10. mysql一对多关联查询分页_mysql一对多关联查询分页错误问题的解决方法

    xml问价中查询数据中包含list,需要使用collection .... .... 这样的查询系统封装的通用分页查询是不对的,所以需要自己sql中加入分页解决 SELECT you.nick_nam ...

最新文章

  1. 在Ubuntu 14.04 64bit上使用Sphinx转换MonaServer项目文档
  2. 画世界怎么用光影_【干货】详解光影的魅力及其绘画技巧,一起打造极致炫丽的光影世界吧!...
  3. 成熟期滞后状态的云计算:应重视云存储及安全策略
  4. ELK+Kafka集群日志分析系统
  5. ip冲突 scan windows_Linux下IP 冲突查看及解决方法
  6. 基于jquery的侧边栏分享导航
  7. (转)海岸线提取完成, 海浪排岸效果
  8. 湖畔大学官微改名为“湖畔创研中心”
  9. java文件按时间排序_如何按日期在java目录中排序文件?
  10. 获取springmvc中所有的Controller
  11. 内部通信服务Factory(WCF)
  12. HZHOST实现自定义FSO权限的方法及其应用
  13. 手机便签软件哪个好用 手机便签软件推荐
  14. 《Adobe Premiere Pro CS4经典教程》——1.7 Adobe Premiere Pro工作区
  15. 秋冬易感冒着凉 风寒感冒9大食疗方
  16. 信用卡3D验证相关资料
  17. Ubuntu 测网速
  18. 泛海微电动修脚器开发方案和电动修脚器单片机方案
  19. mysql 中的pri_关于MySQL中 主键 pri mul
  20. ui设计-文案(CW)

热门文章

  1. MAC批量重命名软件A Better Finder Rename Mac
  2. 【Linux下】 线程同步 生产者与消费者模型
  3. 三维地球Cesium.js的研究
  4. Android Studio 官方示例源码地址
  5. ios13全选手势_ios13的三指手势操作怎么关闭 只要几步就行了
  6. 前缀和和差分(1维)
  7. CSU-ACM2019寒假训练2-D - Maximize the minimum
  8. 双人对战的球类游戏ios源代码项目
  9. 【计算机毕业设计】新闻发布系统
  10. 常规web渗透测试漏洞描述及修复建议