Spring Boot中JPA如何實現按日期合計

棲息之鷹發表於2017-02-23

1. 用queryDsl方法

JPAQueryFactory.select(
	Projections.fields(OrderCountByDayBean.class,
			qOrder.amount.sum().as("amount"),
			qOrder.payTime.year().as("year"),
			qOrder.payTime.dayOfYear().as("dayOfYear")))
	.from(qOrder).where(where)
	.groupBy(qOrder.payTime.year(), qOrder.payTime.dayOfYear())
	.orderBy(qOrder.payTime.year().asc(), qOrder.payTime.dayOfYear().asc())
	.fetch();

*得到的結果是List<OrderCountByDayBean>

2. 用@Query方法

@Query("select new dto.OrderTotalDTO(sum(u.amount), date_format(u.payTime, '%Y-%m-%d')) from Order u where u.payTime >= ?1 group by date_format(u.payTime, '%Y-%m-%d')")

*這裡類似sql文,但是有所不同,比如from的不是table名字,而是model名  

 

相關文章