All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.freegeese.easymybatis.domain.Pagination Maven / Gradle / Ivy

The newest version!
package com.github.freegeese.easymybatis.domain;

import com.google.common.base.Preconditions;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * 分页参数默认实现,创建后可用于调用分页接口
 *
 * @author zhangguangyong
 * @see com.github.freegeese.easymybatis.service.BaseService#selectPage(Pageable)
 * @see com.github.freegeese.easymybatis.service.BaseService#selectPageByEntity(Pageable, Object)
 * @see com.github.freegeese.easymybatis.service.BaseService#selectPageByParameterMap(Pageable, Map)
 * @since 1.0
 */
@Data
public class Pagination implements Pageable {
    // 页码
    private Integer pageNumber;

    // 页面大小
    private Integer pageSize;

    // 总页数
    private Integer totalPages;

    // 总记录数
    private Long totalRecords;

    // 页面数据
    private List content = new ArrayList<>();

    public Pagination() {
    }

    public Pagination(Integer pageNumber, Integer pageSize) {
        Preconditions.checkState(pageNumber > 0, "页码必须大于0");
        Preconditions.checkState(pageSize > 0, "每页的记录数必须大于0");
        this.pageNumber = pageNumber;
        this.pageSize = pageSize;
    }

    public static Pagination create(Integer pageNumber, Integer pageSize) {
        return new Pagination(pageNumber, pageSize);
    }

    @Override
    public Integer getOffset() {
        return (getPageNumber() - 1) * getPageSize();
    }

    @Override
    public Integer getTotalPages() {
        if (Objects.isNull(getTotalRecords())) {
            return null;
        }
        Integer totalRecords = getTotalRecords().intValue();
        Integer pageSize = getPageSize();
        return (totalRecords % pageSize == 0) ? (totalRecords / pageSize) : (totalRecords / pageSize) + 1;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy