使用JPA和@NamedQueries的Spring数据
如果在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数据相关推荐
- Spring使用JPA进行Dao层的数据访问以及事务管理
在上篇文章中,我们完成了SSH+JPA+Mysql的整合: https://blog.csdn.net/a745233700/article/details/81413306 在这篇文章中,我们主要介 ...
- 使用Spring Boot JPA Specification实现使用JSON数据来查询实体数据
文章目录 使用Spring Boot JPA Specification实现使用JSON数据来查询实体数据 需求概要 JSON 结构的设计 使用策略模式执行不同的查询条件 构造查询条件 主逻辑具体的代 ...
- [JAVA EE] JPA技术基础:完成数据列表的删除
接上一篇:[JAVA EE] JPA技术基础:完成数据列表显示 本章完成数据列表的删除 修改 UserController.java package com.example.demo.controll ...
- spring 启动加载数据_12个很棒的Spring数据教程来启动您的数据项目
spring 启动加载数据 Spring Data的任务是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍保留基础数据存储的特殊特征. 它使使用数据访问技术,关系和非关系数据库, ...
- spring 事务持久性_项目学生:Spring数据的持久性
spring 事务持久性 这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server和业务层 ...
- 使用Spring Rest和Spring Data JPA和H2以及Spring Boot示例的Restful API
你好朋友, 在本教程中,您将学习以下内容: 1.在Spring Boot中配置Spring Rest,Spring Data JPA和H2 2.使用Spring Boot创建Springful服务端点 ...
- 将自定义功能添加到Spring数据存储库
Spring Data非常方便,并且避免了样板代码,从而加快了开发速度. 但是,在某些情况下,注释查询不足以实现您可能想要实现的自定义功能. 因此,spring数据允许我们向Spring数据存储库添加 ...
- 12个很棒的Spring数据教程来启动您的数据项目
Spring Data的任务是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍保留基础数据存储的特殊特征. 它使使用数据访问技术,关系和非关系数据库,map-reduce框架以及 ...
- 项目学生:Spring数据的持久性
这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server和业务层 . RESTful we ...
最新文章
- python libusb多线程_一些有助于理解libusb1.0和ctypes的异步USB操作
- 计算机网络向用户提供的最重要的功能
- mysql句柄是什么_MySQL与句柄
- 优酷开放sdk-setOnerroListener
- 2019DTCC大会分享:分布式数据库全局读一致性
- android通过c调用shmat函数,编译可在Android上运行的qemu user mode
- 断言java_Java几种常用的断言风格你怎么选?
- 如何找回丢失的Applications文件夹
- 管理感悟:谈谈用户和需求
- 中小学机器人类竞赛活动2020-2021
- L6470H_电机驱动控制器 L6470HTR_中文规格书
- 如何使用 Enterprise Architect 画 UML
- 如何使用苹果官方文档
- JS实现答题上一题下一题
- 非常全的 matlab 函数
- linu修改open files无效_雷电模拟器修改教程
- [转]SSD:Single Shot Detector详解
- java虚拟机学习笔记之垃圾收集(上)
- 速卖通商标授权怎么弄?速卖通官方授权模板书分享
- PBOC MAC 计算算法 实现