iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot之QueryDsl嵌套子查询问题怎么解决
  • 253
分享到

SpringBoot之QueryDsl嵌套子查询问题怎么解决

2023-07-05 13:07:21 253人浏览 独家记忆
摘要

今天小编给大家分享一下SpringBoot之QueryDsl嵌套子查询问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下

今天小编给大家分享一下SpringBoot之QueryDsl嵌套子查询问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    QueryDsl嵌套子查询

    项目中要求所有的sql必须以JPA的QueryDsl格式进行数据库操作,其中有一个稍微复杂点的嵌套子查询,网上资料比较少,而且子查询也特别简单。

    这是mybatis的查询格式

    select dd.crm_province as 省编码,         dd.province_name as 省份,         nvl(dd.anncount, 0) as 年化收入,         nvl(dd.yicansai, 0) as 已参赛人数,         nvl(ss.weicansai, 0) as 未参赛人数,         rank() over(order by nvl(dd.anncount, 0) desc)  as 排名    from (select ll.crm_province,                 ll.province_name,                 nvl(sum(ll.annuali_count), 0) anncount,                 count(distinct ll.staff_id) yicansai            from tm_match_report_user ll           where ll.is_close = 1             and ll.role_id = 00             and ll.is_login = 1           group by ll.crm_province, ll.province_name) dd    left join (select ll.crm_province, count(distinct ll.staff_id) weicansai                 from tm_match_report_user ll                where ll.is_close = 1                  and ll.role_id = 00                  and ll.is_login = 0                group by ll.crm_province) ss      on dd.crm_province = ss.crm_province   order by dd.anncount desc

    这是JPA的QueryDsl格式

       public List<StaffRank> topBind() {    QMatchReportUser user = new QMatchReportUser("tm_match_report_user");    QMatchReportUser user1 = new QMatchReportUser("tm_match_report_user");     StringPath dd = Expressions.stringPath("dd");    StringPath ss = Expressions.stringPath("ss");     SimpleTemplate<String> crm_Province = Expressions.template(String.class, "dd.crm_Province");     SimpleTemplate<String> sscrm_Province = Expressions.template(String.class, "ss.crm_Province");    SimpleTemplate<String> province_Name = Expressions.template(String.class, "dd.province_Name");    NumberTemplate<Long> anncount = Expressions.numberTemplate(Long.class, "nvl(dd.anncount, 0)");    NumberTemplate<Long> yicansai = Expressions.numberTemplate(Long.class, "nvl(dd.yicansai, 0)");    NumberTemplate<Long> weicansai = Expressions.numberTemplate(Long.class, "nvl(ss.weicansai, 0)");    NumberTemplate<Integer> template = Expressions        .numberTemplate(Integer.class, "rank() over(order by nvl(dd.anncount, 0) desc)");     OrderSpecifier order = new OrderSpecifier(Order.DESC,        Expressions.template(String.class, "dd.anncount"));     SubQueryExpression query = SQLExpressions        .select(user.crm_Province, user.province_Name,            user.annuali_Count.sum().as("anncount"),            user.staff_Id.countDistinct().as("yicansai"))        .from(user)        .where(user.is_CLOSE.eq(1), user.role_Id.eq("00"), user.is_Login.eq("1"))        .groupBy(user.crm_Province, user.province_Name);     SubQueryExpression query1 = SQLExpressions        .select(user1.crm_Province, user1.staff_Id.countDistinct().as("weicansai"))        .from(user1)        .where(user1.is_CLOSE.eq(1), user1.role_Id.eq("00"), user1.is_Login.eq("0"))        .groupBy(user1.crm_Province);     return factory.select(        Projections.bean(StaffRank.class,            crm_Province.as("crm_Province"),            province_Name.as("province_Name"), anncount.as("anncount"),            yicansai.as("yicansai"), weicansai.as("weicansai"), template.as("rank")))        .from(query, dd).leftJoin(query1, ss).on(crm_Province.eq(sscrm_Province)).orderBy(order)        .fetch();  }
    QMatchReportUser user = new QMatchReportUser("tm_match_report_user");

    这个应该不用解释了,QueryDsl会自动生成大写Q的实体类,tm_match_report_user是表名。

    有需要的童鞋可以参考下,基本上大同小异。

    需要注意的是

     NumberTemplate<Integer> template = Expressions                   .numberTemplate(Integer.class,                   "rank() over(order by nvl(dd.anncount, 0) desc)");

    还可以通过占位符的样式来写

    NumberTemplate<Integer> template = Expressions                    .numberTemplate(Integer.class,                     "rank() over(order by nvl(sum({0}), 0) desc)",quser.opening_Count);

    以上就是“springBoot之QueryDsl嵌套子查询问题怎么解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: SpringBoot之QueryDsl嵌套子查询问题怎么解决

    本文链接: https://www.lsjlt.com/news/351698.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • SpringBoot之QueryDsl嵌套子查询问题怎么解决
      今天小编给大家分享一下SpringBoot之QueryDsl嵌套子查询问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
      99+
      2023-07-05
    • SpringBoot之QueryDsl嵌套子查询问题
      目录QueryDsl嵌套子查询这是MyBatis的查询格式这是JPA的QueryDsl格式需要注意的是还可以通过占位符的样式来写总结QueryDsl嵌套子查询 我项目中要求所有的SQ...
      99+
      2023-03-15
      SpringBoot QueryDsl QueryDsl嵌套子查询 SpringBoot嵌套子查询
    • Mysql中的嵌套子查询问题
      目录Mysql嵌套子查询在WHERE子句中使用子查询单行单列子查询单行多列子查询。多行单列子查询FROM子查询:总结:select子查询用子查询用子查询Mysql嵌...
      99+
      2024-04-02
    • 怎么分析Mysql中的嵌套子查询问题
      小编今天带大家了解怎么分析Mysql中的嵌套子查询问题,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“怎么分析Mysql中的嵌套子查询...
      99+
      2023-06-29
    • 数据库的嵌套查询的性能问题怎么解决
      本文小编为大家详细介绍“数据库的嵌套查询的性能问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“数据库的嵌套查询的性能问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
      99+
      2023-03-20
      数据库
    • 怎么解决iframe标签嵌套问题
      小编给大家分享一下怎么解决iframe标签嵌套问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题描述当我们使用easyui做后台管理系统的时候,会使用tree...
      99+
      2023-06-09
    • 关于 MySQL 嵌套子查询中无法关联主表字段问题的解决方法
      今天在工作中写项目的时候,遇到了一个让我感到几乎无解的问题,在转换了思路后,想出了一个折中的解决方案,记录如下。 其实,问题的场景,非常简单: 就是需要查询出上图的数据,红框是从 项目产品表 中查询的2个字段,绿框是从...
      99+
      2022-12-26
      MySQL嵌套子查询 MySQL嵌套子查询无法关联主表字段
    • 关于MySQL嵌套子查询中无法关联主表字段问题的解决方法
      今天在工作中写项目的时候,遇到了一个让我感到几乎无解的问题,在转换了思路后,想出了一个折中的解决方案,记录如下。 其实,问题的场景,非常简单: 就是需要查询出上图的数据,红框是从 ...
      99+
      2022-12-26
      MySQL 嵌套子查询 MySQL 嵌套子查询无法关联主表字段
    • es7之fetch如何解决异步嵌套问题
      这篇文章主要介绍了es7之fetch如何解决异步嵌套问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们之前学习了async和await,...
      99+
      2024-04-02
    • SQLServer数据库中怎么实现嵌套子查询
      本篇文章给大家分享的是有关SQLServer数据库中怎么实现嵌套子查询,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  如何使用SQLServ...
      99+
      2024-04-02
    • 解读数据库的嵌套查询的性能问题
      目录解读数据库的嵌套查询的性能1、嵌套查询2、join查询3、解决方法问题:数据库内部嵌套关系实现模型问题思路总结解读数据库的嵌套查询的性能 explain 是非常重要的性能查询的工具!!! 1、嵌套查询 首先大家都知道...
      99+
      2023-03-15
      数据库嵌套查询 数据库嵌套查询的性能 嵌套查询性能
    • mybatis in foreach双层嵌套问题怎么解决
      这篇文章主要介绍了mybatis in foreach双层嵌套问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatis in foreach双层嵌套问题怎...
      99+
      2023-07-05
    • java嵌套for循环大小问题怎么解决
      在解决Java嵌套for循环大小问题时,可以考虑以下几种方法:1. 使用不同的循环变量:在嵌套循环中使用不同的循环变量,确保内外两层...
      99+
      2023-09-13
      java
    • delete in子查询不走索引问题怎么解决
      本文小编为大家详细介绍“delete in子查询不走索引问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“delete in子查询不走索引问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
      99+
      2023-07-02
    • mysql之跨库关联查询问题怎么解决
      这篇文章主要介绍了mysql之跨库关联查询问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql之跨库关联查询问题怎么解决文章都会有所收获,下面我们一起来看看吧。1、解决方案mysql是不支持跨库...
      99+
      2023-07-05
    • Mybatis中association标签多层嵌套问题怎么解决
      这篇“Mybatis中association标签多层嵌套问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mybat...
      99+
      2023-06-29
    • pydantic resolve怎么解决嵌套数据结构生成问题
      这篇文章主要介绍“pydantic resolve怎么解决嵌套数据结构生成问题”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pydantic resolve怎么解决嵌套数据结构生...
      99+
      2023-07-05
    • mysql中delete in子查询不走索引问题怎么解决
      本文小编为大家详细介绍“mysql中delete in子查询不走索引问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql中delete in子查询不走索引问题...
      99+
      2024-04-02
    • element中form组件prop嵌套属性问题怎么解决
      本篇内容介绍了“element中form组件prop嵌套属性问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Introductio...
      99+
      2023-06-29
    • 怎么解决Mysql多行子查询的使用及空值问题
      这篇文章主要讲解了“怎么解决Mysql多行子查询的使用及空值问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决Mysql多行子查询的使用及空值问题”吧!1 定义也称为集合比较子查询内...
      99+
      2023-06-28
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作