Java 分页查询基类实现 - 简化代码,提升效率
以下是一个分页查询基类的 Java 实现,它提供了一种通用的方法来处理分页查询,并减少重复代码。
public abstract class PagingQuery<T> {
private int pageSize;
private int currentPage;
private int totalCount;
private List<T> result;
public PagingQuery(int pageSize, int currentPage) {
this.pageSize = pageSize;
this.currentPage = currentPage;
}
public abstract List<T> query();
public List<T> getResult() {
if (result == null) {
result = query();
}
return result;
}
public int getTotalCount() {
if (result == null) {
result = query();
}
return totalCount;
}
public int getPageCount() {
int pageCount = (totalCount + pageSize - 1) / pageSize;
return pageCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public void setResult(List<T> result) {
this.result = result;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
}
在使用时,您需要继承这个基类并实现 query() 方法来完成具体的数据查询。例如,以下是一个查询用户的示例:
public class UserQuery extends PagingQuery<User> {
private String name;
public UserQuery(int pageSize, int currentPage, String name) {
super(pageSize, currentPage);
this.name = name;
}
@Override
public List<User> query() {
// 根据条件查询用户列表
List<User> userList = userService.findByName(name);
// 设置总记录数
setTotalCount(userList.size());
// 分页处理
int fromIndex = (getCurrentPage() - 1) * getPageSize();
int toIndex = Math.min(fromIndex + getPageSize(), getTotalCount());
setResult(userList.subList(fromIndex, toIndex));
return getResult();
}
}
您可以根据实际的查询需求扩展此基类,例如支持按多个条件查询、排序等功能。
原文地址: https://www.cveoy.top/t/topic/nu7i 著作权归作者所有。请勿转载和采集!