java - 执行带有多个参数的存储过程,并使用spring data jpa将ResultSet映射到非实体类
问题描述
我们最近迁移到 Spring Data JPA(使用 Spring-boot 2.1.5-RELEASE)并且需要执行具有多个输入参数的存储过程并映射到非实体 POJO(我将在保存时将值设置为实体类对象)。谁能提供一个关于如何实现的示例/描述?我没有从文档中得到太多,或者可能我错过了。
任何帮助,将不胜感激。
解决方案
最直接、最简单的解决方案是使用SimpleJDBCCall
并忘记此数据资源的 JPA。该文档广泛涵盖了参数。
像这样的东西会起作用:
public class MyDao implements SomeDao {
private JdbcTemplate jdbcTemplate;
private SimpleJdbcCall procReadStuff;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.procReadStuff = new SimpleJdbcCall(dataSource)
.withProcedureName("my_procedure");
}
public void readStuff(Long id) {
SqlParameterSource in = new MapSqlParameterSource()
.addValue("in_id", id);
Map out = procReadStuff.execute(in);
Stuff stuff = new Stuff();
stuff.setId(id);
stuff.setSomeString((String) out.get("out_some_string"));
// ...do something with Stuff POJO
}
}
此示例是从文档中的示例中提取/修改的:文档
推荐阅读
- android - WorkManager 将工作设置为未来 10 年
- laravel - Laravel 8:默认路由在哪里?
- docker - Sonatype Nexus OSS 3 内容选择器查询特定存储库
- angular - Styles.scss 未正确应用 Angular 8
- c# - 将行插入表时通知窗口服务
- java - 如何在测试中测试具有长 redeliveryDelays 的 Camel onExceptions 块
- javascript - 将搜索栏添加到 Mapbox GL JS
- python - 使用 pickle 保存 keras 模型时面临“无法腌制 _thread.rlock 对象”错误
- html - 中心列占用两倍空间 - css 布局
- html - 停止覆盖播放器的音频“下载”选项