JPA连接到数据库,调用存储过程,这样的需求很常见。本文就针对这一点,讲述如何使用spring Data JPA调用存储过程的方法。

1、存储过程
假设存储过程如下:
CREATE OR REPLACE PACKAGE test_pkg AS
PROCEDURE in_only_test (inParam1 IN VARCHAR2);
PROCEDURE in_and_out_test (inParam1 IN VARCHAR2, outParam1 OUT VARCHAR2);
END test_pkg;
/
CREATE OR REPLACE PACKAGE BODY test_pkg AS
PROCEDURE in_only_test(inParam1 IN VARCHAR2) AS
BEGIN
DBMS_OUTPUT.PUT_LINE('in_only_test');
END in_only_test;
PROCEDURE in_and_out_test(inParam1 IN VARCHAR2, outParam1 OUT VARCHAR2) AS
BEGIN
outParam1 := 'Woohoo Im an outparam, and this is my inparam ' || inParam1;
END in_and_out_test;
END test_pkg;
这里有两个存储过程:
1)in_only_test
它需要一个输入参数inParam1,但不返回值
2)in_and_out_test
它需要一个输入参数inParam1,且返回值outParam1
2、@NamedStoredProcedureQueries
我们可以使用@NamedStoredProcedureQueries注释来调用存储过程。
@Entity
@Table(name = "MYTABLE")
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(name = "in_only_test", procedureName = "test_pkg.in_only_test", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "inParam1", type = String.class) }),
@NamedStoredProcedureQuery(name = "in_and_out_test", procedureName = "test_pkg.in_and_out_test", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "inParam1", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, name = "outParam1", type = String.class) }) })
public class MyTable implements Serializable {
}
关键要点:
3、创建Spring Data JPA数据库
下面我们来创建Spring Data JPA数据库:
public interface MyTableRepository extends CrudRepository<MyTable, Long> {
@Procedure(name = "in_only_test")
void inOnlyTest(@Param("inParam1") String inParam1);
@Procedure(name = "in_and_out_test")
String inAndOutTest(@Param("inParam1") String inParam1);
}
关键要点:
4、调用
我们可以这样调用存储过程:
// 向存储过程传递参数并返回值 String inParam = "Hi Im an inputParam"; String outParam = myTableRepository.inAndOutTest(inParam); Assert.assertEquals(outParam, "Woohoo Im an outparam, and this is my inparam Hi Im an inputParam"); // 向存储过程传递参数不返回值 myTableRepository.inOnlyTest(inParam);
5、其它技巧
如果上面的代码不工作,可以这么解决。定义自定义的Repository来调用存储过程昨晚本地查询。
定义自定义的Repository:
public interface MyTableRepositoryCustom {
void inOnlyTest(String inParam1);
}
然后要确保主Repository类继承了这个接口。
复制代码 代码如下:
public interface MyTableRepository extends CrudRepository<MyTable, Long>, MyTableRepositoryCustom {}
6、创建Repository实现类
接着该创建Repository实现类了:
public class MyTableRepositoryImpl implements MyTableRepositoryCustom {
@PersistenceContext
private EntityManager em;
@Override
public void inOnlyTest(String inParam1) {
this.em.createNativeQuery("BEGIN in_only_test(:inParam1); END;").setParameter("inParam1", inParam1)
.executeUpdate();
}
}
可以以常规的方式进行调用:
@Autowired MyTableRepository myTableRepository; // 调用存储过程 myTableRepository.inOnlyTest(inParam1);
是不是很简单。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# jpa
# 调用存储过程
# 存储过程
# spring
# Spring Data JPA实现动态查询的两种方法
# spring data jpa使用详解(推荐)
# Spring Data Jpa的四种查询方式详解
# Spring Data JPA实现动态条件与范围查询实例代码
# Spring Data JPA 实现多表关联查询的示例代码
# Spring Data JPA 复杂/多条件组合分页查询
# Spring Data Jpa 复杂查询方式总结(多表关联及自定义分页)
# Spring Data JPA的作用和用法小结
# 返回值
# 自定义
# 我们可以
# 很简单
# 可以使用
# 但不
# 绑定
# 连接到
# 如何使用
# 大家多多
# 昨晚
# 使用了
# 有两个
# 继承了
# StoredProcedureParameter
# br
# Im
# Woohoo
# inparam
相关文章:
贸易公司网站制作流程,出口贸易网站设计怎么做?
济南网站制作的价格,历城一职专官方网站?
如何在阿里云域名上完成建站全流程?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何在万网自助建站中设置域名及备案?
网站制作网站,深圳做网站哪家比较好?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
建站之星如何实现网站加密操作?
建站主机如何选?高性价比方案全解析
详解jQuery中基本的动画方法
如何选择高效响应式自助建站源码系统?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
网站代码制作软件有哪些,如何生成自己网站的代码?
如何选择高效稳定的ISP建站解决方案?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
网站制作公司排行榜,抖音怎样做个人官方网站
,购物网站怎么盈利呢?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
c++怎么用jemalloc c++替换默认内存分配器【性能】
建站与域名管理如何高效结合?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
网站制作公司,橙子建站是合法的吗?
公司网站的制作公司,企业网站制作基本流程有哪些?
制作网页的网站有哪些,电脑上怎么做网页?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
红河网站制作公司,红河事业单位身份证如何上传?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
宝塔建站助手安装配置与建站模板使用全流程解析
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
黑客入侵网站服务器的常见手法有哪些?
如何在云主机上快速搭建多站点网站?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
建站之星如何取消后台验证码生成?
建站之星如何一键生成手机站?
平台云上自助建站如何快速打造专业网站?
教程网站设计制作软件,怎么创建自己的一个网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在阿里云虚拟主机上快速搭建个人网站?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
建站10G流量真的够用吗?如何应对访问高峰?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
常州企业建站如何选择最佳模板?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。