public PageBean<MovieComment> findPage(MovieComment movieComment, PageBean<MovieComment> pageBean){
ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("content", GenericPropertyMatchers.contains());
//withMatcher = withMatcher.withIgnorePaths("isShow");
Example<MovieComment> example = Example.of(movieComment, withMatcher);
Sort sort = Sort.by(Direction.DESC, "createTime");
Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize(),sort);
Page<MovieComment> findAll = movieCommentDao.findAll(example, pageable);
pageBean.setContent(findAll.getContent());
pageBean.setTotal(findAll.getTotalElements());
pageBean.setTotalPage(findAll.getTotalPages());
return pageBean;
}
这是一段关于分页查找电影院评价信息列表的代码
相关代码解析如下:
1.
public PageBean<MovieComment> findPage(MovieComment movieComment,? PageBean<MovieComment> pageBean){
这是一个公开方法,返回类型为
PageBean<MovieComment>
,它接受两个参数:一个MovieComment
对象和一个PageBean<MovieComment>
对象。
2.
?? ??? ?ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("content", GenericPropertyMatchers.contains());
这里创建了一个 ExampleMatcher 对象,用于定义如何匹配
MovieComment
对象的属性。具体来说,它设置了内容属性(
content
)的匹配方式为包含(contains
)。
3.
?? ??? ?Example<MovieComment> example = Example.of(movieComment, withMatcher);
使用上面创建的 withMatcher ,根据传入的 movieComment 对象,创建一个Example<MovieComment> 对象。这个对象可以用于查询数据库。
Example.of()
:这是一个静态方法,用于创建Example
对象。
4.
?? ??? ?Sort sort = Sort.by(Direction.DESC, "createTime");
这行代码是在创建一个
Sort
对象,用于定义数据库查询的排序规则。这里使用了Sort.by()
方法,它接受两个参数:一个是排序方向(Direction.DESC
),另一个是排序的字段名("createTime"
)。定义一个排序规则,按照 createTime 字段降序排列。
5.
?? ??? ?Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize(),sort);
根据传入的pageBean ,创建一个分页请求对象,这里减1是因为分页通常是从0开始的,但数据库查询是从1开始的。
PageRequest.of()
:这是一个静态方法,用于创建Pageable
对象。pageBean.getPageSize()
:获取页面大小,即每页要返回的记录数。sort
:这是前面创建的排序规则对象。
6.
?? ??? ?Page<MovieComment> findAll = movieCommentDao.findAll(example, pageable);
使用上面创建的
example
和pageable
对象,从movieCommentDao
中执行分页查询。
7.
?? ??? ?pageBean.setContent(findAll.getContent());
?? ??? ?pageBean.setTotal(findAll.getTotalElements());
?? ??? ?pageBean.setTotalPage(findAll.getTotalPages());
?? ??? ?return pageBean;
?? ?}
pageBean.setContent(findAll.getContent());
:这行代码将查询结果的内容设置到pageBean
对象的content
属性中。pageBean.setTotal(findAll.getTotalElements());
:这行代码将查询结果的元素总数(即满足条件的记录数)设置到pageBean
对象的total
属性中。pageBean.setTotalPage(findAll.getTotalPages());
:这行代码将查询结果的总页数设置到pageBean
对象的totalPage
属性中。
MovieComment?
pageBean?
package com.demo.movie.bean;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.springframework.stereotype.Component;
/**
* 分页信息封装类
* @author Administrator
*
*/
@Component
public class PageBean<T> {
private int currentPage = 1;//当前页码
private int pageSize = 10;//每页显示数量,默认十条
private long total = 0;//总数量
private int totalPage;//总页数
private List<T> content;
private int showPageSize = 5;//显示在页面可快速跳转的页码个数
private List<Integer> currentShowPage = new ArrayList<Integer>();//当前显示在页面快速跳转的页码
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<T> getContent() {
return content;
}
public void setContent(List<T> content) {
this.content = content;
}
public int getShowPageSize() {
return showPageSize;
}
public void setShowPageSize(int showPageSize) {
this.showPageSize = showPageSize;
}
public List<Integer> getCurrentShowPage() {
//首先当前页往前显示currentShowPage页
for(int i = currentPage - 1;i > 0; i--){
currentShowPage.add(i);
if(i <= (currentPage - showPageSize)){
break;
}
}
//接下来当前页往后显示currentShowPage页
for(int i = currentPage;i <= totalPage; i++){
currentShowPage.add(i);
if(i >= totalPage){
break;
}
if(i >= (showPageSize + currentPage)){
break;
}
}
Collections.sort(currentShowPage);
return currentShowPage;
}
public void setCurrentShowPage(List<Integer> currentShowPage) {
this.currentShowPage = currentShowPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
}
?