JDBC原生分页查询实现

工具类(PageFinderDTO)

package com.uxun.uxunplat.page;

import java.io.Serializable;
import java.util.List;

/**
 * 分页对象. 包含当前页数据及分页信息
 *
 * @author 
 *
 */
public class PageFinderDTO<T> implements Serializable {
   

    private static final long serialVersionUID = -3193453346742977879L;
    /**
	 * 当前页数
	 */
	private int pageNum;
	/**
	 * 每页条数
	 */
	private int pageSize;
    /**
     * 分页查询数据
     */
    private List<T> data;
    /**
     * 总条数
     */
    private int totalPageNum;
    /**
     * 总条数
     */
    private int totalCount;

    /**
     * 是否有上一页
     */
    private boolean hasPrevious = false;

    /**
     * 是否有下一页
     */
    private boolean hasNext = false;


    /**
     * 构造方法
     */
    public PageFinderDTO() {
   }

    /**
     * 构造方法
     * @param pageNum 当前页数
     * @param totalCount 总条数
     */
    public PageFinderDTO(int pageNum, int totalCount) {
   
		this.pageNum = pageNum;
		this.totalCount = totalCount;
		this.totalPageNum = getTotalPageCount();
        refresh();
	}


    /**
     * 构造方法
     * @param pageNum 当前页数
     * @param pageSize 每页条数
     * @param totalCount 总条数
     */
	public PageFinderDTO(int pageNum, int pageSize, int totalCount) {
   
		this.pageNum = pageNum;
		this.pageSize = pageSize;
		this.totalCount = totalCount;
		this.totalPageNum = getTotalPageCount();
        refresh();
	}

    /**
     * 构造方法
     * @param pageNum 当前页数
     * @param pageSize 每页条数
     * @param totalCount 总条数
     * @param data 分页查询数据
     */
	public PageFinderDTO(int pageNum, int pageSize, int totalCount, List<T> data) {
   
		this.pageNum = pageNum;
		this.pageSize = pageSize;
		this.totalCount = totalCount;
		this.totalPageNum = getTotalPageCount();
		this.data = data;
        refresh();
	}

	/**
	 * 获取总页数
	 */
	private final int getTotalPageCount() {
   
		if (totalCount % pageSize == 0) {
   
            return totalCount / pageSize;
        } else {
   
            return totalCount / pageSize + 1;
        }
	}

    /**
     * 刷新当前分页对象数据
     */
    private void refresh() {
   
        if (totalPageNum <= 1) {
   
            hasPrevious = false;
            hasNext = false;
        } else if (pageNum == 1) {
   
            hasPrevious = false;
            hasNext = true;
        } else if (pageNum == totalPageNum) {
   
            hasPrevious = true;
            hasNext = false;
        } else {
   
            hasPrevious = true;
            hasNext = true;
        }
    }

    public int getPageNum() {
   
        return pageNum;
    }

    public void setPageNum(int pageNum) {
   
        this.pageNum = pageNum;
    }

    public int getPageSize() {
   
        return pageSize;
    }

    public void setPageSize(int pageSize) {
   
        this.pageSize = pageSize;
    }

    public List<T> getData() {
   
        return data;
    }

    public void setData(List<T> data) {
   
        this.data = data;
    }

    public int getTotalPageNum() {
   
        return totalPageNum;
    }

    public void setTotalPageNum(int totalPageNum) {
   
        this.totalPageNum = totalPageNum;
    }

    public int getTotalCount() {
   
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
   
        this.totalCount = totalCount;
    }

    public boolean isHasPrevious() {
   
        return hasPrevious;
    }

    public void setHasPrevious(boolean hasPrevious) {
   
        this.hasPrevious = hasPrevious;
    }

    public boolean isHasNext() {
   
        return hasNext;
    }

    public void setHasNext(boolean hasNext) {
   
        this.hasNext = hasNext;
    }
}

工具类(QueryPageDTO)

package com.uxun.uxunplat.page;

/**
 * 分页对象
 * @author 
 */
public class QueryPageDTO {
   

    public static int DEFAULT_PAGE_NUM = 1;
    public static int DEFAULT_PAGE_SIZE = 10;
    public static int MAX_PAGE_SIZE = 100000;

    /**
     * 当前页数
     */
    private int pageNum;
    /**
     * 每页条数
     */
    private int pageSize;
    /**
     * 构造方法
     */
    public QueryPageDTO() {
   
        this.pageNum = DEFAULT_PAGE_NUM;
        this.pageSize = DEFAULT_PAGE_SIZE;
    }

    /**
     *  构造方法
     * @param pageNum 当前页数
     * @param pageSize 每页条数
     */
    public QueryPageDTO(int pageNum, int pageSize) {
   
        this.pageNum = pageNum;
        this.pageSize = pageSize;
    }

    public int getPageNum() {
   
        return pageNum;
    }

    public void setPageNum(int pageNum) {
   
        this.pageNum = pageNum;
    }

    public int getPageSize() {
   
        return pageSize;
    }

    public void setPageSize(int pageSize) {
   
        this.pageSize = pageSize;
    }


}

工具类(JdbcAction)

package com.uxun.emm.lib.utils;

import com.alibaba.fastjson.JSON;
import com.uxun.uxunplat.service.SpringContextUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

import javax.sql.DataSource;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.lang.reflect.Constructor
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值