[Java Spring Data] Query method clauses and expressions
Entity:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | package com.example.university.domain; import javax.persistence.*; import java.util.ArrayList; import java.util.List; /** * JPA Entity representing a student at the University. * * Created by maryellenbowman */ @Entity @Table (name= "STUDENT" ) public class Student { @Id @GeneratedValue private Integer studentId; @Embedded private Person attendee; @Column private boolean fullTime; @Column private Integer age; @OneToMany (fetch = FetchType.EAGER, cascade = CascadeType.ALL) private List<Course> courses = new ArrayList<>(); public Student(Person attendee, boolean fullTime, Integer age) { this .attendee = attendee; this .fullTime = fullTime; this .age = age; courses = new ArrayList<>(); } protected Student() { } public Integer getStudentId() { return studentId; } public Person getAttendee() { return attendee; } public void setAge(Integer age) { this .age = age; } public boolean isFullTime() { return fullTime; } public Integer getAge() { return age; } public List<Course> getCourses() { return courses; } @Override public String toString() { return "Student{" + "studentId=" + studentId + ", " + attendee + ", fullTime=" + fullTime + ", age=" + age + "}\n" ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package com.example.university.domain; import javax.persistence.Column; import javax.persistence.Embeddable; /** * Person encapsulates an individual's first and last name. * * Created by maryellenbowman */ @Embeddable public class Person { @Column private String firstName; @Column private String lastName; public Person(String firstName, String lastName) { this .firstName = firstName; this .lastName = lastName; } protected Person() { } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } @Override public String toString() { return " firstName='" + firstName + '\ '' + ", lastName='" + lastName + "\' " ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package com.example.university.domain; import javax.persistence.*; import java.util.ArrayList; import java.util.List; /** * JPA Entity for a Course offered at the University. * * Created by maryellenbowman. */ @Entity @Table (name= "COURSE" ) public class Course { @Id @GeneratedValue private Integer id; @Column private String name; @Column private Integer credits; @OneToOne private Staff instructor; @ManyToMany (fetch = FetchType.EAGER, cascade = CascadeType.ALL) private List<Course> prerequisites = new ArrayList<>(); @ManyToOne private Department department; public Course(String name, Integer credits, Staff instructor, Department department) { this .name = name; this .credits = credits; this .instructor = instructor; this .department = department; } protected Course() { } public Integer getId() { return id; } public String getName() { return name; } public Staff getInstructor() { return instructor; } public Department getDepartment() { return department; } public Course addPrerequisite(Course prerequisite){ prerequisites.add(prerequisite); return this ; } @Override public String toString() { return "Course{" + "name='" + name + '\ '' + ", id=" + id + ", credits=" + credits + ", instructor=" + instructor + ", department=" + department.getName() + '}' ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package com.example.university.repo; import com.example.university.domain.Person; import com.example.university.domain.Student; import org.springframework.data.repository.CrudRepository; import java.util.List; /** * DataSource Management for the Students at the University. * * Created by maryellenbowman */ public interface StudentRepository extends CrudRepository<Student, Integer>{ //Simple Query Methods List<Student> findByFullTime( boolean fullTime); List<Student> findByAge(Integer age); List<Student> findByAttendeeLastName(String last); //Query Methods with Clauses and Exrpessions Student findByAttendeeFirstNameAndAttendeeLastName(String firstName, String lastName); Student findByAttendee(Person person); List<Student> findByAgeGreaterThan( int minimumAge); List<Student> findByAgeLessThan( int maximumAge); List<Student> findByAttendeeLastNameIgnoreCase(String lastName); // studentRepository.findByAttendeeLastNameLike("%i%").forEach(System.out::println); List<Student> findByAttendeeLastNameLike(String likeString); // Find highest student in the alphabet Student findFirstByOrderByAttendeeLastNameAsc(); // Find the oldest student Student findTopByOrderByAgeDesc(); // Find 3 oldest students List<Student> findTop3ByOrderByAgeDesc(); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-12-18 [Schematics] 3. Generate module, service, guard with @nrwl/workspace
2018-12-18 [Algorithms] Quicksort algorithm using TypeScript
2018-12-18 [Algorithms] Tree Data Structure in JavaScript
2017-12-18 [Python] Indexing An Array With Another Array with numpy
2017-12-18 [Python] Accessing Array Elements
2017-12-18 [Python] ndArray of numpy
2017-12-18 [React] Implement a Higher Order Component with Render Props