如何在REST Web服务中实现最简单的外星人?

如何在REST Web服务中实现最简单的外星人?,第1张

概述我需要一个直接从 stored procedure返回数据的JSON端点.示例: @Procedure("complex")String complexStoredProcedure(); 最简单的情况是没有参数的GET端点…返回的数据是(blabck-box)JSON,与Spring实体没有关系,也没有特殊的数据类型(我的Spring应用程序的“外来数据类型”). . 如果你需要一个例子,假设 我需要一个直接从 stored procedure返回数据的JsON端点.示例:
@Procedure("complex")String complexStoredProcedure();

最简单的情况是没有参数的GET端点…返回的数据是(blabck-box)JsON,与Spring实体没有关系,也没有特殊的数据类型(我的Spring应用程序的“外来数据类型”). .

如果你需要一个例子,假设一个简单的控制器为

@RequestMapPing(value="/howto",method=RequestMethod.GET)@ResponseStatus(httpStatus.OK)@Procedure(name = "MyRandom.random")  // ?? not workpublic String howto() {     double x = random();  // from stored-procedure call,how to do it?    return "{\"result\":"+x+"}";}

怎么实现呢?也就是说,实现控制器方法的最简单方法(调用存储过程)?

编辑:清理冗余代码片段,转移到answer-Wiki below.

解决方法 我不确定我是否理解你的问题,但这是我的解决方案.

我在oracle DB上创建了一个简单的过程:

PROCEDURE TESTPROCOUTPUT   (param2 OUT VARCHAR2)   IS   GETParaM VARCHAR2(100);BEGIN    param2 := 'procedure Called';END TESTPROCOUTPUT;

要在Spring环境中使用@Procedure,您需要一个Entity和一个Repository.所以我创建了一个简单的实体和它的存储库:

@Entitypublic class City {    @ID    private String cityCode;    //...getter/setter}

库:

public interface LandRepository extends CrudRepository<City,String> {    @Procedure(name="TESTPROCOUTPUT",outputParametername="param2")    String TESTPROCOUTPUT();}

重要的是方法名称与过程具有相同的名称. (不确定它是否仅适用于oracle的情况.也可以在camelCase中我认为)

因此,在您的控制器中,您现在可以轻松地自动装配存储库(或者如果您有接口的实现,则使用此方法).

@Controllerpublic class CityController {    private CityRepository cityRepository;    @RequestMapPing(value="/howto",method=RequestMethod.GET)    @ResponseStatus(httpStatus.OK)    @ResponseBody    public String howto() {         String s = cityRepository.TESTPROCOUTPUT();        return "{\"result\":" + s + "}";    }    public CityRepository getCityRepository () {        return cityRepository;    }    @autowired    public voID setCityRepository (CityRepository cityRepository) {        this.cityRepository= cityRepository;    }}

结果是:

因此,您无法在非存储库方法上使用@Procedure注释.

Annotation to declare JPA 2.1 stored procedure mapPings directly on repository methods.

总结

以上是内存溢出为你收集整理的如何在REST Web服务中实现最简单的外星人?全部内容,希望文章能够帮你解决如何在REST Web服务中实现最简单的外星人?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1139670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存