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

 这种是预定义查询的一种形式

(1)在 @Entity 下增加 @NamedQuery 定义。

public @interface NamedQuery {//query的名称,规则:实体.方法名;String name();//具体的JPQL查询语法String query();
}

需要注意,这里的 Query 里面的值也是 JPQL,查询参数也要和实体进行对应起来。因为实际场景 中这种破坏 Entity 的侵入式很不美感,也不方便,所以这种方式容易遗忘,工作中不推荐。

(2)与之相对应的还有 @NamedNativeQuery。用法一样,唯一不一样的是,Query 里面放置的是原生 SQL 语句,而非实体的字段名字。

用法举例

(1)实体里面的写法。

@Entity
@NamedQuery(name="Customer.findByFirstName",query = "select c from Customer c where c.firstName = ?1")
public class Customer {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Long id;private String firstName;private String lastName;
......
}

(2)CustomerRepository 里面的写法。

Customer findByFirstName(String bauer);

(3)调用者的写法。

Customer customer = repository.findByFirstName("Bauer");

@NamedQuery 和 @Query 方法定义查询三者对比:

  • Spring JPA 里面的有先级,咱们前面章节有讲到过:@Query > @NameQuery > 方法定义查询。
  • 推荐使用的有优先级:@Query > 方法定义查询 > @NameQuery。
  • 相同点,都不支持动态条件查询。

@Query 的优缺点与实战经验分享

分类

描述

优点

(1)可以灵活快速使用JPQL和SQL

(2)对返回的结果和字段进行自定义

(3)支持连接表查询和对象关联查询,可以组合出复杂的SQL或JPQL

(4)可以很好的表达查询思路

(5)灵活性非常强,快捷方便

缺点

(1)不支持动态查询条件,参数个数如果不固定则不支持

(2)有些读者会将返回结果用Map或者Object[]数组接收结果,会导致调用此方法的开发人员不知道返回结果里面到底有些什么数据

实战经验

(1)当出现很复杂的SQL或者JPQL时候,建议用视图

(2)返回结果一定要用对象接收,最好每个对象里面的字段和返回的结果一一对应

(3)动态的QueryParam会在后面的章节中讲到

(4)能用JPQL,就不用SQL

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

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

相关文章

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;钱被盗走——这就是最典型的“钓鱼…

java 常量折叠_深入理解Java虚拟机之早期编译器优化

Javac编译器Javac编译器是一个由Java语言编写的程序Javac的源码与调试从Sun Javac的代码来看&#xff0c;编译器大致分为3个过程&#xff1a;解析与填充符号表的过程插入式注解处理器的注解处理过程分析与字节码生成的过程Javac编译动作的入口为com.sun.tools.javac.main.JavaC…

Spring Data JPA 从入门到精通~JpaRepository介绍

从 JpaRepository 开始的子类&#xff0c;都是 Spring Data 项目对 JPA 实现的封装与扩展。JpaRepository 本身继承 PagingAndSortingRepository 接口&#xff0c;是针对 JPA 技术的接口&#xff0c;提供 flush()、saveAndFlush()、deleteInBatch()、deleteAllInBatch() 等方法…

深入理解程序从编译到运行

From&#xff1a;http://blog.chinaunix.net/uid-22327815-id-3540305.html 从 Hello World 说程序运行机制&#xff1a;http://www.sohu.com/a/132798003_505868 C/C 中如何在 main() 函数之前执行一条语句&#xff1f;&#xff1a;https://www.zhihu.com/question/26031933 …

用VML画图(一些基本的矢量图)(转)

用VML画图(一些基本的矢量图) 注&#xff1a;其中所有的left:top:都是针对图左上角的&#xff0c;比如圆&#xff0c;他的左上角应该是以圆为中心的矩形的左上角 1.line(直线) a.示例&#xff1a; <html xmlns:v"urn:schemas-microsoft-com:vml"> <head>…

技术力量 | 社会计算与计算社会: 智慧社会的基础与必然

来源&#xff1a;智慧城市决策参考摘要&#xff1a;基于社会计算&#xff0c;智慧社会可充分利用开放流动的大数据资源, 综合协调人、地、事、物和组织等各种要素, 形成信息对称、权利对等、扁平化组织的社会结构, 推动传统社会管理模式向分布式、集约化、信息化、智能化、全响…

php关闭当前页_php如何直接关闭页面注销SESSION

php如何直接关闭页面注销SESSION发布时间&#xff1a;2020-07-09 09:03:06来源&#xff1a;亿速云阅读&#xff1a;100作者&#xff1a;Leah这篇文章将为大家详细讲解有关php如何直接关闭页面注销SESSION&#xff0c;文章内容质量较高&#xff0c;因此小编分享给大家做个参考&a…