[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法

简介: [亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法

一、前言

我们知道在plsql里可以通过下面方式执行存储过程,

begin P_ACCOUNT(202004270000) ; end;
--或者
call  P_ACCOUNT(202004270000)

但是在代码里如何调用存储过程呢,我试了一些网上大家提供的方法,基本没用效果,包括在@Query后面加{call P_ACCOUNT(?,?)} 什么存储过程名称的,或者各种接口、实现类互相调用的,都是千篇一律,不知道哪家copy哪家的,都没有任何效果 。

或者这些方法对他们的项目可能有用,亦是我的姿势可能不对,但是总的来说,下面这个方法是我亲测可用的,而且实现起来相对更简单,十行代码都不到就能实现


二、调用存储过程Demo

//公众号灵儿的笔记:zygxsq
    @Transactional
  @Modifying
  @Query
  public void callProcedureSend(Long Id){
    logger.info("调用存储过程P_ACCOUNT({})",new Object[]{Id});
    StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("P_ACCOUNT");
    storedProcedure.registerStoredProcedureParameter("A_ID", Long.class, ParameterMode.IN);
    storedProcedure.registerStoredProcedureParameter("result", String.class, ParameterMode.OUT);
    storedProcedure.setParameter("A_ID", Id);
    boolean execute = storedProcedure.execute();
        //博客原帖链接:https://blog.csdn.net/qq_27471405/article/details/105794591
    //获取返回结果
    String result = storedProcedure.getOutputParameterValue("result").toString();
  }


三、代码说明

P_ACCOUNT :就是在oracle中的存储过程名称


A_ID :就是入参,如果还有其他入参,就再写一行,


storedProcedure.registerStoredProcedureParameter("xxx参数", 参数类型, ParameterMode.IN);


我这里的入参id是一个number类型,所以这里用Long.class,如果是char类型,这里就用String.class


result:这里是自定义一个返回值的参数名称,如果存储过程有返回值返回,就加这行代码,如果没有的话,就不需要加这两行了

storedProcedure.registerStoredProcedureParameter("result", String.class, ParameterMode.OUT);


String result = storedProcedure.getOutputParameterValue("result").toString();

相关文章
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
48 7
|
1月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
34 1
|
2月前
|
存储 安全 Java
|
1月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
32 1
|
2月前
|
存储 Java API
如何使用 Java 记录简化 Spring Data 中的数据实体
如何使用 Java 记录简化 Spring Data 中的数据实体
41 9
|
1月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
25 0
|
3月前
|
Java 应用服务中间件 Spring
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
|
3月前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
3月前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
4月前
|
Java Spring 数据库
怎样动动手指就能实现数据操作?Spring Data JPA背后的魔法揭秘
【8月更文挑战第31天】在Java开发中,数据库交互至关重要。传统的JDBC操作繁琐且难维护,而Spring Data JPA作为集成JPA的数据访问层解决方案,提供了CRUD等通用操作接口,显著减少代码量。通过继承`JpaRepository`,开发者能轻松实现数据的增删改查,甚至复杂查询和分页也不再困难。本文将通过示例详细介绍如何利用Spring Data JPA简化数据访问层的开发,提升代码质量和可维护性。
48 0

推荐镜像

更多