[Java Spring Data] Query method clauses and expressions
Entity:
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";
}
}
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 + "\' ";
}
}
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() +
'}';
}
}
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();
}

浙公网安备 33010602011771号