Spring Data JPA 从入门到精通~@Procedure 储存过程的查询方法

我们通过 @Procedure 来介绍一下,JPA 对储存过程的支持。

(1)@Procedure 源码如下:

public @interface Procedure {// 数据库里面储存过程的名称String value() default "";// 数据库里面储存过程的名称String procedureName() default "";//在EntityManager中的名字,NamedStoredProcedureQuery使用String name() default "";//输出参数的名字String outputParameterName() default "";
}

(2)首先创建一个储存过程名字叫 plus1inout 有两个参数、两个结果。

CREATE PROCEDURE plus1inout(IN arg int, OUT res int)
BEGINSELECT (arg+10) into res;
END

(3)我们可以使用 @NamedStoredProcedureQueries 注释来调用存储过程,这个必须定义在一个实体上面。

@Entity
@NamedStoredProcedureQuery(name = "User.plus1", procedureName = "plus1inout", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "arg", type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, name = "res", type = Integer.class) })
public class User {//这个是一个Procedure实体类,可以通过NamedStoredProcedureQueries在这个类里面定义多个储存过程的查询。
}

关键要点:

  • 存储过程使用了注释 @NamedStoredProcedureQuery,并绑定到一个 JPA 表;
  • procedureName 是存储过程的名字;
  • name 是 JPA 中的存储过程的名字;
  • 使用注释 @StoredProcedureParameter 来定义存储过程使用的 IN/OUT 参数。

(4)直接通过自定义过的 Repository 完成储存过程的调用。

public interface MyUserRepository extends CrudRepository<User, Long> {
@Procedure("plus1inout")//通过储存过程的名字
Integer explicitlyNamedPlus1inout(Integer arg);
@Procedure(procedureName = "plus1inout")//通过储存过程的名字
Integer plus1inout(Integer arg);
@Procedure(name = "User.plus1IO")//自定义的储存过程的名字
Integer entityAnnotatedCustomNamedProcedurePlus1IO(@Param("arg") Integer arg);
}

关键要点:

  • @Procedure 的 procedureName 参数必须匹配 @NamedStoredProcedureQuery 的 procedureName。
  • @Procedure 的 name 参数必须匹配 @NamedStoredProcedureQuery 的 name。
  • @Param 必须匹配 @StoredProcedureParameter 注释的 name 参数。
  • 返回类型必须匹配:in_only_test存储过程返回是 void,in_and_out_test存储过程必须返回 String。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nature 首度揭示大脑传递信息的真正逻辑

我们对于大脑的理解还停留在极为初步的阶段&#xff08;图片来源&#xff1a;Pixabay&#xff09;来源&#xff1a;生物360摘要&#xff1a;我们过去对于大脑处理信息的理解&#xff0c;其实是非常片面和不准确的。今日&#xff0c;一项重量级的研究刊登在了最新一期的《自然》…

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

From&#xff1a;http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html 鸟哥官网 Linux 帐号管理与 ACL 权限设定&#xff1a;http://linux.vbird.org/linux_basic/0410accountmanager.php 鸟哥官网&#xff08;简体中文&#xff09;&#xff1a;http://cn.linux.…

java+long是什么_Java中long的模运算符是什么? - java

如何在Java中找到两个长数值的模(&#xff05;)&#xff1f;我的代码说“整数太大”&#xff0c;后面跟我要修改的数字。我尝试将其强制转换很长时间&#xff0c;但没有成功。我是否必须将其转换为BigInteger并使用剩下的方法&#xff1f;谢谢。参考方案%运算符确实可以工作很长…

发现一个奇怪的问题: 不能把文件取名为 con

在 XP 系统下不能建立叫 con 的文件! 不知其他朋友也是这样? 转载于:https://www.cnblogs.com/del/archive/2009/04/26/1444175.html

IBM Watson将成为失败的投资?分析师眼里, IBM AI过度乐观, 夸大宣传

来源&#xff1a;36Kr 作者&#xff1a;石筱玉IBM Watson是在医疗领域最早布局的AI之一。在36Kr此前的盘点中&#xff0c;我们也知道Watson希望参与患者诊疗中的每一个步骤&#xff1a;导医用智能音箱、Watson诊断工具、住院看护辅助&#xff0c;还有病患心理疏导……Watson已…

Spring Data JPA 从入门到精通~@NamedQueries预定义查询

这种是预定义查询的一种形式 &#xff08;1&#xff09;在 Entity 下增加 NamedQuery 定义。 public interface NamedQuery {//query的名称&#xff0c;规则&#xff1a;实体.方法名&#xff1b;String name();//具体的JPQL查询语法String query(); } 需要注意&#xff0c;这…

jsp+servlet+java 实现统计在线人数

首先&#xff1a;jsp ----------------------------index.jsp 我要现在index.jsp 写一段 JavaScript <html> <head> <script type"text/javascript"> window.onbeforeunload function() //author: meizz { var n window.event.screenX - …

linux 文件系统详解

From&#xff1a;http://soysauce93.blog.51cto.com/7589461/1715655 From&#xff1a;http://blog.csdn.net/new0801/article/details/63687127 Linux 的虚拟文件系统(强烈推荐)&#xff1a;http://blog.csdn.net/heikefangxian23/article/details/51579971 鸟哥 Linux 磁盘…

国际互联网协会(ISOC)提出未来互联网十项原则

来源&#xff1a;腾讯研究院此前&#xff0c;国际互联网协会&#xff08;Internet Society&#xff0c;简称ISOC&#xff09;发布了题为《通往数字化未来之路&#xff08;Paths to Our Digital Future&#xff09;》的报告&#xff0c;就数字化未来的道路进行了探索。ISOC认为&…

不错的html学习网址。

http://htmlplayground.com/ 转载于:https://www.cnblogs.com/techfootsprints/archive/2009/04/28/1445774.html

Spring Data JPA 从入门到精通~javax.persistence概况介绍

虽然 Spring Data JPA 已经对数据的操作封装的很好了&#xff0c;约定大于配置的思想&#xff0c;帮我们默认了很多东西。JPA&#xff08;Java 持久性 API&#xff09;是存储业务实体关联的实体的来源&#xff0c;它显示了如何定义一个面向普通 Java 对象&#xff08;POJO&…

java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析

[java中判断字符串是否为数字的三种方法 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i str.length();--i>0;){ if (!CharactJava 判断字符串是否为空的三种方法与性能分析Java编程过程中经常会涉及到判断空字符串的问题&#x…

Linux安装配置类似mac下的docky

百度经验&#xff1a;ubuntu安装配置类似mac下的docky 亲手打造自己的Linux桌面环境&#xff1a;http://os.51cto.com/art/201510/493896_all.htm Dock是一种图形用户界面元素&#xff0c;允许用户一键访问常用的应用程序&#xff0c;在应用程序之间快速切换&#xff0c;以及…

埃森哲:2018年科技愿景

来源&#xff1a;199IT互联网数据中心埃森哲近日发布了新报告“2018年科技愿景”&#xff0c;分析了五大技术趋势让企业能够挖掘潜力&#xff0c;创造新的商业机会并帮助改变我们所知道的世界。1公民AI&#xff08;人工智能&#xff09;AI随处可见&#xff0c;在整个社会范围内…

IT人不要一直做技术(转--我也不知道转了几圈了)

【引子】感觉这篇文章很有深意&#xff0c;正是我所想说的话。希望大家有借鉴。 【原文】 我现在是自己做&#xff0c;但我此前有多年在从事软件开发工作&#xff0c;当回过头来想一想自己&#xff0c;觉得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话&#xff0c;希望你…

java 导出excel教程_Java导出Excel表格

Java导出Excel表格 导出Excel表格需要一个poi-3.9.jar的包&#xff0c;该包在网上可以找到。第一步&#xff0c;创建Excel对象。 HSSFWorkbook workbook new HSSFWorkbook();创建一个工作表。 HSSFSheet sheet workbook.createSheet("日常收入报表");创建合并单元格…

Spring Data JPA 从入门到精通~基本注解

Entity、Table、Id、GeneratedValue、Basic、Column、Transient、Lob、Temporal 先看一个 Blog 的案例其中实体的配置如下&#xff1a; Entity Table(name "user_blog", schema "test") public class UserBlogEntity {IdColumn(name "id", …

大数据竞赛平台——Kaggle 入门

From&#xff1a;http://blog.csdn.net/u012162613/article/details/41929171 大数据竞赛平台——Kaggle 入门篇 这篇文章适合那些刚接触Kaggle、想尽快熟悉Kaggle并且独立完成一个竞赛项目的网友&#xff0c;对于已经在Kaggle上参赛过的网友来说&#xff0c;大可不必耗费时间…

俄罗斯智库 | 人工智能在军事领域的发展现状及应用前景

本文来自&#xff1a;知远战略与防务研究所原文来自&#xff1a;俄罗斯外交和国防政策委员会网站人工智能在军事领域的发展现状及应用前景本文主要介绍了当今世界及俄罗斯本国人工智能技术发展的现状以及未来该技术在军事领域的应用前景&#xff0c;文章还重点分析了人工智能技…

Internet Explorer 8 使用技巧(3):安全上网

如何上网更安全&#xff1f; 听说过“网络钓鱼”吗&#xff1f;最简单的例子&#xff1a;有不法分子模仿真实的银行网站做了个一模一样的&#xff0c;然后通过邮件或其他方式骗你登录并输入银行账号和密码&#xff0c;结果信息泄露&#xff0c;钱被盗走——这就是最典型的“钓鱼…