Statement.addBatch 不应该用于SELECT,而是用于批处理INSERTs 和UPDATEs
您需要的是一个带有 UNION 的自定义查询,以便在一个 sql 中获取您需要的所有数据。
SELECT COUNT(n.lastUpdatedOn)
FROM TableEntity n
WHERE n.lastUpdatedOn BETWEEN :start1 AND :end1
UNION
SELECT COUNT(n.lastUpdatedOn)
FROM TableEntity n
WHERE n.lastUpdatedOn BETWEEN :start2 AND :end2
UNION
SELECT COUNT(n.lastUpdatedOn)
FROM TableEntity n
WHERE n.lastUpdatedOn BETWEEN :start3 AND :end3
还有你的存储库代码。
@Query("SELECT COUNT(n.lastUpdatedOn) FROM TableEntity n WHERE n.lastUpdatedOn BETWEEN :start1 AND :end1 UNION SELECT COUNT(n.lastUpdatedOn) FROM TableEntity n WHERE n.lastUpdatedOn BETWEEN :start2 AND :end2 UNION SELECT COUNT(n.lastUpdatedOn) FROM TableEntity n WHERE n.lastUpdatedOn BETWEEN :start3 AND :end3")
List<Long> countModifiedTimeStamp(@Param("start1") Timestamp start1, @Param("end1") Timestamp end1, @Param("start2") Timestamp start2, @Param("end2") Timestamp end2, @Param("start3") Timestamp start3, @Param("end3") Timestamp end3);
当你打电话时
List<Long> counts = this.repo.countModifiedTimeStamp(todayStartDay, today, last7days, today, longBack, last7days);
在返回的列表中,today 在第一个元素中,last7days 在第二个元素中,longBack 在第三个元素中。