querydsl+jpa编程中如何使用函数

原生的sql中使用的函数,具体的sql实现如下:

select tt.extend_id,
       tt.extend_name,
       wm_concat(distinct tt.extend_code),
       sum(rr.annuali_count),
       count(distinct rr.staff_id)
  from tm_duct_whole rr
  left join tm_duct_extend_data tt
    on rr.industry_type = tt.extend_code
 where tt.extend_type = 3
   and rr.is_close = 0
   and rr.is_login = 1
   and rr.industry_type is not null
 group by tt.extend_id, tt.extend_name

转化为jpa实现的编程,借助模板使用函数。具体的操作如下所示:

//编译生成的实体类
QTmDuctWhole tmDuctWhole = QTmDuctWhole.tmDuctWhole;
QBasicData basicData = QBasicData.basicData;
//求和
SimpleTemplate<Double> annualiCount = Expressions
    .template(Double.class, "round(sum(ANNUALI_COUNT))");
//进行字符串拼接    
SimpleTemplate<String> extendCode = Expressions
    .template(String.class, "to_char(wm_concat(distinct EXTEND_CODE))");
//计算总人数    
SimpleTemplate<Integer> userCount = Expressions
    .template(Integer.class, " count(distinct staff_id)");
List<TrackBean> industryList = secondaryJpaSqlQuery()
    .select(Projections.bean(TrackBean.class,
        basicData.extendId.as("extendId"),
        basicData.extendName.as("extendName"),
        extendCode.as("extendCode"),
        annualiCount.as("annualiCount"),
        userCount.as("count")))
    .from(tmDuctWhole).leftJoin(basicData)
    .on(tmDuctWhole.industryType.eq(basicData.extendCode))
    .where(basicData.extendType.eq(3)
        .and(tmDuctWhole.isClose.eq(0))
        .and(tmDuctWhole.isLogin.eq(1))
        .and(tmDuctWhole.industryType.isNotEmpty()))
    .groupBy(basicData.extendId, basicData.extendName)
    .fetch();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
querydsl-jpa 是一个基于 Java 语言的开源 ORM 查询框架,它提供了一种类型安全、流畅的 API 接口,使得查询 JPA 实体变得更加容易和简单。通过使用 querydsl-jpa,开发人员可以避免常见的 JPA 查询繁琐和容易出错的情况,同时,也可以享受到类型安全、易于维护和更加高效的查询体验。 querydsl-jpa 的主要特点包括: 1. 类型安全的查询:querydsl-jpa 提供了一种类型安全的查询 API 接口,完全避免了使用字符串拼接的方式来生成 SQL 语句的情况。 2. 支持 JPA 实体:querydsl-jpa 能够直接与 JPA 实体进行交互,从而使得在查询使用的实体更加类型化和直观。 3. 支持复杂查询操作:querydsl-jpa 支持诸如嵌套子查询、联合查询、分页查询、排序查询等常见的查询操作,从而满足了更加复杂的查询需求。 4. 提供完整的类型支持:querydsl-jpa 支持传统的 SQL 数据类型,例如 INTEGER、VARCHAR 等,也支持 JPA 支持的所有类型,例如 Date、Time、Timestamp、Boolean 等。 5. 可维护性强:querydsl-jpa 生成的查询语句易于阅读和维护,从而减少了因为 SQL 语句难以阅读和理解而带来的错误和困难。 综上所述,querydsl-jpa 是一种高效、易用、类型安全、并且具有完整类型支持的 ORM 查询框架,它极大地方便了 Java 开发人员进行 JPA 实体查询操作,提高了项目的开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值