我们最近转移到Spring data JPA(使用Spring-引导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
}
}
此示例是从文档中的示例中提取/修改的:文档
我正在使用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’查找最高/最常使用的存储过程