我想用Spring Boot Data JPA配置我的应用程序并调用存储过程。但是,在搜索网络后,我发现这种方法必须使用某种实体表"。
但是,我很困惑为什么需要在实体上绑定存储过程元数据定义?如果我没有这样的实体表怎么办?还有另一种方式吗?
答案 0 :(得分:0)
您链接的网页,他们解释了如何您可以从String Data JPA调用存储过程。
我知道这看起来很奇怪。他们说,你需要定义一个实体来捎带它上面的存储过程调用。
那么为什么要使用Spring Data代替JDBC调用呢?我只能猜测:
答案 1 :(得分:0)
您可以在Repository接口
中使用类似的东西直接调用存储过程@Procedure(procedureName = "test_pkg.in_and_out_test")
String callStoredProc(Long id, String p_method);
答案 2 :(得分:0)
经过一些研究后,我不会使用Spring Data JPA
来调用存储过程。相反,我会选择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
干杯