Restful service - 一次调用,多次SQL执行,一次响应

时间:2014-12-02 22:56:57

标签: java sql-server rest

伙计们我很担心这个。假设我有一个对象需要通过运行3个不同的SQL语句从 SAME (如前所述不同的表)中的数据库中返回3个不同的数字,不幸的是SQL语句有点复杂,我不知道如何将它们现在组合成单个语句。所以暂时我想实现 - 请求(运行3个单独的查询)响应..

我发现THIS这是我想要的,但这是基于C而不是Java。你知道一个等价的吗?或者,如果您对如何处理这个问题有所了解?

我现在拥有的是在我的php页面中显示内容,我向这个类别发出3个单独的请求,并且每个请求都有一个唯一的标记'

所以

www.something.com?stuff1=stuff1&flag=1
www.something.com?stuff1=stuff1&flag=2 

依此类推,然后返回3个不同的数字,然后我会在页面上显示。它有效,但它不是很好,我想让它变得更好“。 ;)

修改

我正在为此应用使用Spring Framework

好的以下是我针对数据库运行的SQL查询。

public String query1() {
        setCurrent("Phone 1");
        return "select sum(case when calltime<60 then 0.035 else ceiling(calltime*3.5*10/60)/1000 end) from call where accountid = "+account.getId()+" and oqannounced is not null"
                + " and (calledback is null or (not ((calledback=2 and agentid is not null)))) and entry>'"+account.getFromDate()+"' and entry < '"+account.getToDate()+"'";
}

public String query2() {
        setCurrent("Phone 2");
        return "select count(1) from call where accountid = "+account.getId()+" and agentid is not null and calledback=2 and entry>'"+account.getFromDate()+"' and entry < '"+account.getToDate()+"'";
}

public String query3() {
        setCurrent("Phone 3");
        return "select sum(case when calltime<60 then 0.004 else ceiling(calltime*0.4*10/60)/1000 end) from call where accountid = "+account.getId()+" and oqannounced is null"
                + " and (calledback is null or (not ((calledback=2 and agentid is not null)))) and entry>'"+account.getFromDate()+"' and entry < '"+account.getToDate()+"'";
}   

所以之前说过我需要针对3个不同的tabled运行,事实上我道歉但是我错了它的同一个表,所以我认为有一种方法可以加入(并且可能重新分解)这些SQL语句。请注意,我没有写过这些语句,而是其他开发人员。

由于

1 个答案:

答案 0 :(得分:0)

您可以创建可以包含所有3个查询的Stored Procedure,并将结果返回给您的代码。从那时起,您可以根据需要准备JSON /响应。

您可以找到有关从MySQL存储过程here返回多个值的精彩教程。