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

未找到具有db调用的Spring Rest API类型返回值的转换器

司空宗清
2023-03-14

编辑:我想出了如何解决这个问题,并在下面的答案中发布了它。

我正在尝试创建一个API来查询数据库并返回两个值。我知道db查询可以工作,因为我可以看到它将值输出到控制台。但当我执行它时,我得到了这个错误:没有找到类型为:class hello的返回值的转换器。获取患者信息

这是我的控制器代码:

package hello;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PatientInfoController {

    @RequestMapping("/patientinfo")
    @ResponseBody
    public GetPatientInfo getPatientInfo (@RequestParam String ssnum){
        return new GetPatientInfo(ssnum);
    }
}

这是我的班级:

package hello;

import com.automation.dataprovider.DatabaseFunctions;

public class GetPatientInfo {
    DatabaseFunctions db = new DatabaseFunctions();
    private final String pname;
    private final String patno;

    public GetPatientInfo(String ssnum){
        this.patno = getPatNo(ssnum);
        this.pname = getPname(ssnum);

    }

    public String getPatNo(String ssnum){
        String query = "SELECT PATNO FROM lib.PATIENTS WHERE SSNUM = '" + ssnum +"'";
        String patno = db.returnSingleValue(query).toString();
        System.out.println(patno);
        return patno;
    }

    public String getPname(String ssnum){
        String query = "SELECT PNAME FROM lib.PATIENTS WHERE SSNUM = '" + ssnum +"'";
        String pname = db.returnSingleValue(query).toString();
        System.out.println(pname);
        return pname;
    }
}

我肯定我做了一些根本错误的事情,因为我以前从未创建过api,但我只是没有迅速取得进展。任何帮助都将不胜感激。

共有2个答案

梁丘洲
2023-03-14

我发现我做错了什么,我需要传入两个变量,这样它们就会被设置然后返回。

private final String pname = "";
    private final String patno = "";

    @RequestMapping("/patientinfo")
    @ResponseBody
    public GetPatientInfo getPatientInfo (@RequestParam String ssnum){
        return new GetPatientInfo(pname, patno, ssnum);
    }

这样做纠正了收到的错误。

南宫凯康
2023-03-14

您可以尝试使您的类独立于数据库。对于数据库信息,您应该始终只返回包装类。因此包装类根本不应该进行数据库调用。

所以你可以这样做。套餐您好;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.automation.dataprovider.DatabaseFunctions;

@RestController
public class PatientInfoController {



@RequestMapping("/patientinfo")
@ResponseBody
public GetPatientInfo getPatientInfo (@RequestParam String ssnum){
    DatabaseFunctions db = new DatabaseFunctions();
    String pname = db.returnSingleValue("SELECT PNAME FROM lib.PATIENTS WHERE SSNUM = '" + ssnum +"'";).toString();
    String patno = b.returnSingleValue(SELECT PATNO FROM lib.PATIENTS WHERE SSNUM = '" + ssnum +"'").toString();
    return new GetPatientInfo(pname, patno);
}

然后在GetPatientInfo中

package hello;

import com.automation.dataprovider.DatabaseFunctions;

public class GetPatientInfo {
DatabaseFunctions db = new DatabaseFunctions();
private final String pname;
private final String patno;

public GetPatientInfo(String pname, String patno){
    this.patno = patno;
    this.pname = pname;

}

public String getPatNo(){
    return this.patno;
}

public String getPname(){
    return this.pname;
}
}

就像@Bob Drinks在他的评论中提到的那样:查看这个问题以确保您添加了返回JSON所需的依赖项。

 类似资料:
  • 问题内容: 有了这个代码 我得到以下异常 我的猜测是,由于缺少Jackson,该对象无法转换为JSON。我不明白为什么,因为我以为杰克逊内置弹簧靴。 然后我试图将Jackson添加到pom.xml中,但是我仍然遇到相同的错误 我是否需要更改任何Spring Boot属性才能使其正常工作? 谢谢 问题答案: 问题是Foo中的一个嵌套对象没有任何对象

  • 根据这个Spring引导教程,我正在编写一个简单的RESTAPI。在我的本地开发机器(Ubuntu 15.04和Windows 8.1)上,一切都很有魅力。 我有一个旧的服务器,我想在其上部署我的服务。 开始日志正常,但只要我向endpoint发送请求,就会出现以下错误: 然后沿着stacktrace往下看: 整个堆栈跟踪都张贴在这里。 我查看了一些引用此错误的答案,但这些似乎不适用于我的问题,因

  • 我为协变返回类型的继承创建了一个小示例。基本上有三种不同的类别: 主应用程序: BaseManager: 鸟经理: 当我重写方法以返回时,为什么我需要将类型转换为? 我使用过的重写方法在返回类型上会有所不同吗?作为参考。 编辑: 我有不同的子模型,它们都继承自。所有模型都允许存在一次。我尝试将这些模型添加到列表中,而不是对每个模型使用单例。使用,我想得到实际的模型。也许我得考虑太多了。

  • 我试图在控制器中的一个方法中使用这样的HashMap返回json 当我在PostMan中点击这个方法时,我得到了这个错误 这就是我设置应用程序的方式 错误说,它不能将列表转换为httpMessges,所以我需要任何转换器或类似的东西吗?我错过了什么?

  • 我有这门课: 这个问题: 但我有这个错误

  • 当使用使用回调的第三方函数时,我试图返回指定的类型。我有一个接口 在实现接口时,我调用了一个使用回调的AWS Cognito异步函数。 在调用此方法时,如何仍返回身份验证结果的类型(注册在后台)?(我不想将其更改为 void,以便我可以在界面上使用匕首)。 编辑 我在dagger中尝试了许多不同的方法,但都不成功。我试图将下面的界面作为一个字段注入到一个活动中。 组件 然后我得到三个声明的错误,这