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

使用Spring data jpa执行具有多个参数的存储过程并将ResultSet映射到非实体类

柯甫
2023-03-14

我们最近转移到Spring data JPA(使用Spring-引导2.1.5-RELEASE),需要执行具有多个输入参数的存储过程并映射到非实体POJO(我将在保存对象的同时将值设置为实体类)。有人能提供一个如何实现的例子/描述吗?我没有从留档中得到太多,或者可能我错过了。

任何帮助都将不胜感激。

共有1个答案

洪逸清
2023-03-14

最直接,最简单的解决方案是使用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
    }

}

此示例是从文档中的示例中提取/修改的:文档

 类似资料:
  • 我正在使用spring数据JPA存储库来调用存储过程。就好像在整个应用程序中,我们对存储过程有严格的依赖性一样,我必须使用非实体存储过程调用。以下是我选择的称呼方式: 它适用于存储过程返回单个结果集的所有情况。 但是它不适用于返回多个结果集的存储过程。它只返回第一个结果集,不给出任何错误。 在我们的项目中,我们有spring-boot-starter-data-jpa版本1.5.8和hiberna

  • 问题内容: 我正在使用Sql Server2008。我的存储过程接受将近150个参数。在性能方面有什么问题吗? 问题答案: 在性能上没有错,但是闻起来可以用动态SQL更好地完成。不看代码很难说。

  • 问题内容: 我在sql server中创建了一个存储过程来馈送SSRS,以允许它接受多个值。我已经创建了它,当我在报表中使用它或在sql server中执行它时,出现以下错误消息。我有什么想念的吗?谢谢 这是我的示例数据。随时使用它创建表 这是我的动态存储过程代码 谢谢 错误的梅格 问题答案: 还有另一种方法可以做到这一点。为何不使用函数拆分参数,而不是将值传递给动态查询? 一旦选择了其中一个功能

  • 问题内容: 我在我的应用程序中收到一个错误,我不知道如何解决它。这是代码: 我收到的错误是与。它说 InvalidCastException无法将参数值从任务转换为字符串。 我认为这与我尝试放置位置有关(在if语句内部),但我不确定。任何帮助将非常感激。 谢谢, 马特 问题答案: 我的猜测是 t不是字符串吗?

  • 问题是,我想用mybatis/ibatis从java调用一个存储过程,这个过程有多个OUT参数,精确的7个,其中2个是Number,另外5个varchar,加上一个Number param 在上下文中有一个很大的限制,它没有模型,只有映射和列表,尽管如果需要,我们可以在调用过程时做一个例外。此外,解决方案必须用java完成,没有使用xml。 我有一个springboot应用程序,有一个rest服务

  • 问题内容: 我们在应用程序中创建了许多效率低下的存储过程,我们总是将其推迟以提高其效率,直到我们对数据库性能遇到严重的问题为止。 现在,我正在考虑通过最常执行的存储过程一一修复它。 找出哪个存储过程最执行的最佳方法是什么? 是否有一个脚本可以显示哪个存储过程执行得最多? 问题答案: 使用: 参考:SQL SERVER‘2005’查找最高/最常使用的存储过程