gpt4 book ai didi

java - 从 DAO 类中的单个列表中的两个查询中获取结果

转载 作者:行者123 更新时间:2023-11-29 03:05:33 25 4
gpt4 key购买 nike

我试图在 DAO 类中获取两个不同的选择查询作为 java 中的单个列表。

public List<SBCDocumentDetailsVO> getsBCDetails() throws DataAccessException, SQLException{
List<SBCDocumentDetailsVO> sbcDocList = new ArrayList<SBCDocumentDetailsVO>();


MapSqlParameterSource namedParameter = new MapSqlParameterSource();

//using NamedParameterJdbcTemplate for querying
sbcDocList = this.getNamedParameterJdbcTemplate().query(
sbcDetailsQuery, namedParameter,
new sBCDetailsMapper());
return sbcDocList;

我选择的查询是

SELECT State, marketId, COUNT(marketId)
FROM BatchReport
GROUP BY State, marketID


SELECT
SUM(CASE marketID WHEN 'in' THEN 1 ELSE 0 END) AS totalCountInd
,SUM(CASE marketID WHEN 'gr' THEN 1 ELSE 0 END) AS totalCountGrp
FROM BatchReport

任何人都可以帮助我在一个列表中获得 2 个查询。

最佳答案

从我的角度来看,你有两种可能性:


集合合并

想法是执行两个查询并将两个结果添加到一个列表中:

...
List result = new ArrayList();
result.addAll(firstQuery());
result.addAll(secondQuery());
...

SQL 联合

对于 SQL Union,您将有一个用于检索整个结果列表的查询。你可以看看怎么做here

在你的情况下你不能做这样的事情:

SELECT 
State,
marketId,
COUNT(marketId)
FROM
BatchReport
GROUP BY
State,
marketID
UNION
SELECT
'Total',
SUM(CASE marketID WHEN 'in' THEN 1 ELSE 0 END) AS totalCountInd,
SUM(CASE marketID WHEN 'gr' THEN 1 ELSE 0 END) AS totalCountGrp
FROM BatchReport

我会在 SQL UNION 解决方案上投入时间,因为它只需查询一次数据库即可解决问题。

您可以在此处查看DEMO:http://sqlfiddle.com/#!2/e5285/1

关于java - 从 DAO 类中的单个列表中的两个查询中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com