JavaWeb中Mysql数据库分页

数据库分页原理在Mysql数据库中提供了分页语句:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offsetLIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。...
摘要由CSDN通过智能技术生成

数据库分页原理

在Mysql数据库中提供了分页语句:
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。

LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。例如:
select * from table WHERE … LIMIT 10; #返回前10行
select * from table WHERE … LIMIT 0,10; #返回前10行
select * from table WHERE … LIMIT 10,20; #返回第10-20行数据

在实际设计中,我们会发现分页具有多个属性,分别是页码(pageIndex)、页大小(pageSize)、从数据库中查询的数据总条数(totalSize)、以及用来存放每页查询的数据的集合(list)。(当然也包括页总数(pageCount),不过页总数可以通过(totalSize/pageSize)来获取),所以我们可以设计一个PageBean对象类封装。
具体代码如下:

import java.util.List;

public class PageBean<T>{
   
    /**
     * 页码
     */
    private int pageNum;
    /**
     * 页大小
     */
    private  int pageSize;
    /**
     * 数据总数
     */
    private long totalSize;
    /**
     * 总页数
     */
    private int pageCount;
    /**
     * 页面数据
     */
    private List<T> data;

    public PageBean() {
   
    }

    public PageBean(int pageNum, int pageSize, long totalSize,  List<T> data) {
   
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.totalSize = totalSize;
        pageCount= (int) (totalSize%pageSize==0?totalSize/pageSize:totalSize/pageSize+1);
        this.data = data;
    }

    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 long getTotalSize() {
   
        return totalSize;
    }

    public void setTotalSize(long totalSize) {
   
        this.totalSize = totalSize;
    }

    public int getPageCount() {
   
        return pageCount;
    }

    public void setPageCount(int pageCount) {
   
        this.pageCount = pageCount;
    }

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

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

    @Override
    public String toString() {
   
        return "PageBean{" +
                "pageNum=" + pageNum +
                ", pageSize=" + pageSize +
                ", totalSize=" + totalSize +
                ", pageCount=" + pageCount +
                ", data=" + data +
                '}';
    }
}

现在有一个学生表,需要实现在页面上显示并使用分页。首先创建一个Student类,属性与员工表属性保持一致即可。
tb_emp数据表结构:
在这里插入图片描述

  • sid:学生学号
  • sname:学生姓名
  • age:学生年龄
  • gender:学生性别
  • date:入学日期(由于接收的日期是字符串格式,在存入数据库中会和数据库中的date类型字段不匹配,抛出异常,所以我们可以转换,使用simpledateformate,这里我使用beanutils工具类中提供的转换工具ConverUtils完成转换)

                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值