java - Spring boot rest api - 我可以在不为响应对象创建任何 java 类(DTO 或实体)的情况下获得响应吗?
问题描述
我正在实现 spring boot rest api 应用程序,我在其中调用存储过程(返回 refcursor)。我需要将该响应显示为带有键、值对的 JSON 对象,而无需为该响应创建任何 DTO 或实体。是否有可能达到上述要求?
我从存储过程中得到响应(光标)。
@覆盖
公共列表 getOrder(String orderNo) {
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("xx.xxx.get_order_details"); query.registerStoredProcedureParameter(1, String.class, ParameterMode.IN); query.registerStoredProcedureParameter(2, void.class, ParameterMode.REF_CURSOR); query.setParameter(1, "OR-1001");
列出结果 = query.getResultList();。
解决方案
是的,您可以Map<String, Object>
从控制器类返回或使用 Jackson 的泛型JsonNode
类。
Map 的一个示例可能如下(在 Java 11 的帮助下):
@RestController
@RequestMapping("/public")
public class PublicController {
@GetMapping("/data")
public Map<String, Object> returnFoo() {
Map<String, Object> resultFromDatabase = Map.of("name", "duke", "data",
Map.of("id", 1337, "enabled", true));
return resultFromDatabase;
}
}
结果如下
curl -v localhost:8080/public/data
{"data":{"id":1337,"enabled":true},"name":"duke"}
也可以只返回Object
,但是您必须确保数据库的结果始终可以解析为 JSON,否则您可能会遇到异常:
@GetMapping("/data")
public Object returnFoo() {
Map<String, Object> resultFromDatabase = Map.of("name", "duke", "data",
Map.of("id", 1337, "enabled", true));
return resultFromDatabase;
}
推荐阅读
- sass - 粗鲁的问题。未应用变换效果的过渡
- reactjs - 在reactjs中更改图像onclick
- git - 使用 libgit 查找具有给定前缀的提交
- c# - DataTable TableName = DataView.ToTable("TableName") 将不起作用
- powershell - 如何索引powershell对象中的某一行
- amazon-web-services - 如何签署 AWS MediaPackage URL
- php - 如何修复 Slim 3 PUT、DELETE 请求不起作用
- python - 错误:预期“Id”列的类型为“Int32”,但为“String”
- php - 从 PhoneGap 设置会话变量 PHP
- r - 如何将非线性模型添加到散点图中?