JpaRepository提供了如下表所述的内置查询:
方法 | 描述 |
---|---|
List findAll() | 返回所有实体 |
List findAll(Iterable ids) | 返回指定id的所有实体 |
T getOne(ID id) | 根据id返回对应的实体,如果未找到,则返回空 |
List findAll(Sort sort) | 返回所有实体,按照指定顺序排序返回 |
Page findAll(Pageable pageable) | 返回实体列表,实体的offset和limit通过pageable来指定 |
主要讲讲第5个方法:
Pageable接口:
PageRequest是Pageable的实现类,可以通过以下工厂方法创建:
public static PageRequest of(int page,int size)
public static PageRequest of(int page,int size,Sort sort)
public static PageRequest of(int page,int size,Direction direction,String ... properties)
page从0开始,表示查询页,size是个数
Page类:
int getTotalPages() 获取总的页数
long getTotalElements() 返回总数
List getContent() 返回某页的结果集
例子:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(length = 255)
private String name;
@Column(length = 2)
private String sex;
@Column(length = 255)
private String address;
public User(){}
public User(int id, String name, String sex, String address) {
this.id = id;
this.name = name;
this.sex = sex;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
@Repository
public interface UserRepository extends JpaRepository<User,Integer> {
}
@Test
public void contextLoads() {
PageRequest pageReques=PageRequest.of(0,2); //获取第1页的两条记录
Page<User> page=userRepository.findAll(pageReques);
List<User> users=page.getContent();
for(User t:users)
System.out.println(t);
}