QueryDsl使用DATE_FORMAT函数 COUNT函数 并自定义返回实体 条件GROUP BY ORDER BY

首先感谢

https://blog.csdn.net/qq_38230774/article/details/88870649

https://blog.csdn.net/qq_38230774/article/details/88870649

https://bbs.csdn.net/topics/392207536的资料

先说需求  查询每个月的数据量是多少

详细点:

             查询某一段时间内的 每个月数据量

             并按照 状态、月份分组 

             并按照 月份排序

直接上代码 业务:

QSafetyHiddenTrouble qSafetyHiddenTrouble = QSafetyHiddenTrouble.safetyHiddenTrouble;
//建立格式化模板        
StringTemplate dataeExpr = Expressions.stringTemplate("DATE_FORMAT({0},'%Y-%m')",qSafetyHiddenTrouble.submissionTime);

        List<SafetyHiddenTroubleStatusFetchCount>  safetyHiddenTroubleStatusFetchCounts  = jpaQueryFactory
                .select(
                        Projections.bean(
                                SafetyHiddenTroubleStatusFetchCount.class,
                                dataeExpr.as("month"),
                                qSafetyHiddenTrouble.id.count().as("count"),
                                qSafetyHiddenTrouble.status
                        )//注意应该和SafetyHiddenTroubleStatusFetchCount最好名称一一对应(我没试取不一样的,因为我感觉应该是java反射需要比对属性名称所以最好取一样的)
                )
                .from(qSafetyHiddenTrouble)
                .where(
                        qSafetyHiddenTrouble.submissionTime.between(from,to)
                )
                .groupBy(
                        dataeExpr,
                        qSafetyHiddenTrouble.status
                )
                .orderBy(
                        dataeExpr.desc()
                )
                .fetch();

然后就是我的SafetyHiddenTroubleStatusFetchCount的类了给你们看一下

@Data
public class SafetyHiddenTroubleStatusFetchCount {

    private Long count;//数量

    private String month;//月份

    private Integer status;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值