如果在JPA实体上使用Spring Data和@NamedQuery批注,则可以使用spring数据存储库以更方便的方式轻松使用它们。

在先前的博客中,我们使用spring boot和docker 创建了spring数据项目。 我们将使用相同的项目并增强存储库的功能。

我们将实现一个命名查询,该查询将仅在雇员的姓氏与指定的字符数相等时才提取雇员。

package com.gkatzioura.springdata.jpa.persistence.entity;import javax.persistence.*;/*** Created by gkatzioura on 6/2/16.*/
@Entity
@Table(name = "employee", schema="spring_data_jpa_example")
@NamedQuery(name = "Employee.fetchByLastNameLength",query = "SELECT e FROM Employee e WHERE CHAR_LENGTH(e.lastname) =:length "
)
public class Employee {@Id@Column(name = "id")@GeneratedValue(strategy = GenerationType.SEQUENCE)private Long id;@Column(name = "firstname")private String firstName;@Column(name = "lastname")private String lastname;@Column(name = "email")private String email;@Column(name = "age")private Integer age;@Column(name = "salary")private Integer salary;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastname() {return lastname;}public void setLastname(String lastname) {this.lastname = lastname;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getSalary() {return salary;}public void setSalary(Integer salary) {this.salary = salary;}
}

请特别注意查询名称和我们遵循@ {EntityName}。{queryName}的约定。
然后,将方法添加到我们的spring数据存储库中。

package com.gkatzioura.springdata.jpa.persistence.repository;import com.gkatzioura.springdata.jpa.persistence.entity.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;import java.util.List;/*** Created by gkatzioura on 6/2/16.*/
@Repository
public interface EmployeeRepository extends JpaRepository<Employee,Long>, EmployeeRepositoryCustom {List<Employee> fetchByLastNameLength(@Param("length") Long length);
}

最后但并非最不重要的一点是向我们的控制器添加一些功能。

package com.gkatzioura.springdata.jpa.controller;import com.gkatzioura.springdata.jpa.persistence.entity.Employee;
import com.gkatzioura.springdata.jpa.persistence.repository.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** Created by gkatzioura on 6/2/16.*/
@RestController
public class TestController {@Autowiredprivate EmployeeRepository employeeRepository;@RequestMapping("/employee")public List<Employee> getTest() {return employeeRepository.findAll();}@RequestMapping("/employee/filter")public List<Employee> getFiltered(String firstName,@RequestParam(defaultValue = "0") Double bonusAmount) {return employeeRepository.getFirstNamesLikeAndBonusBigger(firstName,bonusAmount);}@RequestMapping("/employee/lastnameLength")public List<Employee> fetchByLength(Long length) {return employeeRepository.fetchByLastNameLength(length);}}

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2017/03/spring-data-jpa-namedqueries.html

使用JPA和@NamedQueries的Spring数据相关推荐

  1. Spring使用JPA进行Dao层的数据访问以及事务管理

    在上篇文章中,我们完成了SSH+JPA+Mysql的整合: https://blog.csdn.net/a745233700/article/details/81413306 在这篇文章中,我们主要介 ...

  2. 使用Spring Boot JPA Specification实现使用JSON数据来查询实体数据

    文章目录 使用Spring Boot JPA Specification实现使用JSON数据来查询实体数据 需求概要 JSON 结构的设计 使用策略模式执行不同的查询条件 构造查询条件 主逻辑具体的代 ...

  3. [JAVA EE] JPA技术基础:完成数据列表的删除

    接上一篇:[JAVA EE] JPA技术基础:完成数据列表显示 本章完成数据列表的删除 修改 UserController.java package com.example.demo.controll ...

  4. spring 启动加载数据_12个很棒的Spring数据教程来启动您的数据项目

    spring 启动加载数据 Spring Data的任务是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍保留基础数据存储的特​​殊特征. 它使使用数据访问技术,关系和非关系数据库, ...

  5. spring 事务持久性_项目学生:Spring数据的持久性

    spring 事务持久性 这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server和业务层 ...

  6. 使用Spring Rest和Spring Data JPA和H2以及Spring Boot示例的Restful API

    你好朋友, 在本教程中,您将学习以下内容: 1.在Spring Boot中配置Spring Rest,Spring Data JPA和H2 2.使用Spring Boot创建Springful服务端点 ...

  7. 将自定义功能添加到Spring数据存储库

    Spring Data非常方便,并且避免了样板代码,从而加快了开发速度. 但是,在某些情况下,注释查询不足以实现您可能想要实现的自定义功能. 因此,spring数据允许我们向Spring数据存储库添加 ...

  8. 12个很棒的Spring数据教程来启动您的数据项目

    Spring Data的任务是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍保留基础数据存储的特​​殊特征. 它使使用数据访问技术,关系和非关系数据库,map-reduce框架以及 ...

  9. 项目学生:Spring数据的持久性

    这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server和业务层 . RESTful we ...

最新文章

  1. python libusb多线程_一些有助于理解libusb1.0和ctypes的异步USB操作
  2. 计算机网络向用户提供的最重要的功能
  3. mysql句柄是什么_MySQL与句柄
  4. 优酷开放sdk-setOnerroListener
  5. 2019DTCC大会分享:分布式数据库全局读一致性
  6. android通过c调用shmat函数,编译可在Android上运行的qemu user mode
  7. 断言java_Java几种常用的断言风格你怎么选?
  8. 如何找回丢失的Applications文件夹
  9. 管理感悟:谈谈用户和需求
  10. 中小学机器人类竞赛活动2020-2021
  11. L6470H_电机驱动控制器 L6470HTR_中文规格书
  12. 如何使用 Enterprise Architect 画 UML
  13. 如何使用苹果官方文档
  14. JS实现答题上一题下一题
  15. 非常全的 matlab 函数
  16. linu修改open files无效_雷电模拟器修改教程
  17. [转]SSD:Single Shot Detector详解
  18. java虚拟机学习笔记之垃圾收集(上)
  19. 速卖通商标授权怎么弄?速卖通官方授权模板书分享
  20. PBOC MAC 计算算法 实现

热门文章

  1. 如何合理的规划一次 JVM 性能调优
  2. 指定查找区间,查找学生姓名并显示是否修改成功
  3. PhotoShop基础知识
  4. 用一年的时间,依靠SEO创造一个成功的网站
  5. MyBatis中增删改操作
  6. java后台手动分页
  7. IDEA 底部工具栏没有 Version Control 解决办法
  8. 语言 高速公路超速处罚_重磅!全国高速将统一限速,这4种超速不再扣分罚款!【饮茶论道】...
  9. (转-这篇文章非常棒) Thread的中断机制(interrupt)
  10. spring order_Spring @Order批注