当前位置: 首页 > 知识库问答 >
问题:

如果PostgresSQL查询返回json,那么如何在SpringBoot中访问它呢?

萧远
2023-03-14

一个db家伙在PostgreSQL上编写了以下查询。它将返回此json:

[{"id":8,"totalDays":429,"daysRemaining":-257,"absent":[3,3,2,3,3,3,3,3,3,3,3,3],"present":[0,0,1,0,0,0,0,0,0,0,0,0],"courseBatch":"java"}]

我需要创建一个具有这些id的模型类,并将这个json值插入到该模型类中,plz是否有人可以帮助。。。如果它返回我可以处理的结果集,但它返回的是json,那么请给我一个合适的代码来克服朋友和成员。提前谢谢

查询:

@Query(value = "WITH coursedetails AS(
SELECT 
        csb.CourseId,
        csb.batchid,
        csb.startdate ,
        csb.EndDate,
        gs AS Month,
        uc.coursename
    FROM CourseScheduledBatches csb  
    cross join generate_series(1,12,1)gs
    JOIN UserCourses uc on 
        uc.courseid = csb.courseid
        AND uc.userid = 54 AND uc.coursename='java'
),
finaldata AS(
    SELECT 
        cd.CourseId,
        cd.EndDate::date - cd.StartDate::date AS totaldays,
        cd.EndDate::date - CURRENT_DATE AS daysRemaining,
        cd.Month,
        count(DISTINCT ca.TraineeId) AS TraineesPresent,
        count(DISTINCT tc.TraineeId) AS totalTrainees,
        cd.coursename
    FROM coursedetails cd 
    LEFT JOIN CourseAttendence ca on 
        ca.courseid = cd.courseid
        AND ca.batchid = cd.batchid
        AND cd.Month = extract(MONTH FROM ca.StartDate)
    LEFT JOIN TraineeCourses tc ON 
        tc.courseid = cd.courseid
        AND tc.batchid = cd.batchid
    GROUP BY 1, 2, 3, 4, 7
    ORDER BY 4
)
SELECT json_agg(row_to_json(q.*))
FROM(
    SELECT 
        courseid AS "id",
        totaldays AS "totalDays",
        daysRemaining AS "daysRemaining",
        ARRAY_AGG(totalTrainees - TraineesPresent) AS "absent",
        ARRAY_AGG(TraineesPresent) AS "present",
        coursename AS "courseBatch"
    FROM finaldata        
    group by 1, 2, 3, 6
)q;",nativeQuery = true)
    List<Object> getAttendanceAvgBasedOnUserIdAndRolename(BigInteger userId, String batchName);

共有1个答案

郎祯
2023-03-14

你可以做:

Gson gson = new Gson(); 
MyType target2 = gson.fromJson(json, MyType.class);

编写类,使其具有与json字符串匹配的属性。使用数组表示缺席和出席

 类似资料:
  • 我希望在spring boot中返回类似以下内容的json响应: 我的RestController如下所示 但我得到的反应是这样的

  • 问题内容: 如果返回0行,那么我需要。是否可以在带有条件语句的单个MySQL查询中执行此操作? 编辑: 所有答案均有效,但前提是两个查询均从同一表(或具有相同列数的表)中选择。如果第二个查询应用于具有联接的其他表上怎么办? 让我写下我的查询以使问题更清楚: 第一: 如果第一个结果为空,则: 第二名: 如果返回第一个查询,我将使用第一个查询的行,否则将使用第二个查询。 问题答案: 从我刚刚进行的快速

  • 我对Python相当陌生,在我的应用程序中,我使用Neomodel从Neo4j数据库加载和检索图形数据。 在我的一条路线中,我具有以下功能: 我的用户类定义如下: 我期望我的 /users路由将返回一个包含数据库中所有用户的JSON对象。我明白NodeSet对象不能序列化为JSON对象,因此我试图将其转换为列表。但是现在,当我运行时,我得到以下错误:“TypeError:类型'User'的对象不是

  • 我看到了一个问题,我希望能做一次精神检查。。。我在UI端处理Spring Boot控制器方法的返回。该方法返回一个字符串,其@RequestMapping将“consumes”定义为JSON。没有定义“产品”。 在UI端,我看到了一个错误,因为在响应头中,内容类型被列为application/json,但它实际上是一个字符串,所以当它尝试解析json时失败。 Spring是否会因为consumes

  • 问题内容: 我对.net中的elasticsearch客户端进行了一项小型研究,发现NEST是对此问题最受支持的解决方案之一。 我正在查看Nest的文档,但我找不到从查询输出原始json并避免将序列化为对象的方法,因为我在前端使用了angularJs,所以我不想重载该过程通过一些不必要的步骤将信息发送给客户端。 ......而且我还想知道如何覆盖序列化过程? 我发现NEST使用Json.NET,我

  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?