我想用Spring Boot数据JPA配置我的应用程序,并调用存储过程。然而,在搜索web之后,我发现这种方法必须使用某种“实体表”。
例如,这可以从这里和这里的解释中看出。
但是,我不明白为什么需要将存储过程元数据定义绑定到一个实体上?如果我没有这样的实体表怎么办?没有别的办法了吗?
最后,在做了一些研究之后,我不打算使用<code>Spring数据JPA</code>来调用存储过程。相反,我将选择Spring JDBCTemplate
。
下面是如何做到这一点:
1)在pom.xml
添加以下依赖项(请注意,我使用的是Spring Boot):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>1.5.6.RELEASE</version>
</dependency>
2)在您的DAO类中,注入以下内容:
@Autowired
private JdbcTemplate jdbcTemplate;
3)在您的DAO类中,您可以使用类似于下面给出的内容:
LOGGER.info("Calling stored proc...");
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withSchemaName("test").withProcedureName("test_proc");
SqlParameterSource in = new MapSqlParameterSource().addValue("name", "akshay");
Map<String, Object> out = simpleJdbcCall.execute(in);
LOGGER.info("Output from procedure: {}", out.get("fullname"));
LOGGER.info("Returned from stored proc.");
更多信息可以从这里获得:https://docs.spring.io/spring/docs/3.0.0.M4/reference/html/ch12s05.html
干杯
您可以在存储库界面中使用类似的方法直接调用存储过程
@Procedure(procedureName = "test_pkg.in_and_out_test")
String callStoredProc(Long id, String p_method);
您链接的页面解释了如何从String Data JPA调用存储过程。
它看起来很奇怪,我知道。他们说,您需要定义一个实体来承载存储过程调用。
那么,为什么使用Spring数据而不是JDBC呼叫呢?我只能猜测:
我们正在.NET中构建一个REST API,部署到Azure应用程序服务/Azure API应用程序。通过该API,客户端可以创建“产品”并查询“产品”。产品实体有一组通用的字段,所有客户在创建产品时都必须提供这些字段,如下面的字段(示例) 我们目前将这些产品作为自包含文档存储在Azure Cosmos DB中。 问题一:分区。该集合不会存储大量的文档,我们谈论的最多是大约2 500 000个文档
问题内容: 任何人都可以用C,C ++和Java清楚地解释一下。什么都在堆栈上,什么都在堆上以及何时分配。 我所知道的, 每个函数调用的所有局部变量(无论是基元,指针还是引用变量)都在新的堆栈框架上。 使用new或malloc创建的所有内容都会进入堆。 我对几件事感到困惑。 是在堆上创建的对象成员的引用/基元是否也存储在堆上? 以及在每个框架中递归创建的方法的那些本地成员呢?它们都在堆栈上吗?如果
问题内容: 我在MySQL数据库中存储了大约一百个例程,其中大多数都以“ root”作为定义者。 我有另一个名为“ abc”的mysql帐户,如何将所有例程的定义程序更改为“ abc”。 如果我只能以“ abc”用户而不是“ root”用户身份访问MySQL服务器,是否可以这样做? 问题答案: 据我所知:您将必须获取所有脚本的脚本文本并将其拖放/重新创建为abc。除非abc有权删除/创建过程,否则
我在ngOnInit方法中初始化一个库,如下所示: 然后我在ngOnInit内部从该实例调用此方法: 所以它的方法最终看起来像这样: 但是我不明白为什么console.log打印的结果是未定义的,如果实际上是这样的话。调用console.log的$grid。 我需要在该方法中再次使用该实例来执行以下操作: 但我不能,因为在这个方法中,$grid是未定义的,这对我来说毫无意义。 有什么想法吗?
问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’
问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。