打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JDBC分页管理(MySQL)

分页原理

实现前台页面的分页显示主要依靠MySQL中limit限制,我们可以在select语句中加入limit begin, count设置查询的起始位置和总共需要查询的记录数。由此我们可以定义一个PageBean的类用于记录分页的信息

package com.shop.domain;import java.util.List;public class PageBean<T> {    private int page;// 当前页数    private int limit;// 每页显示记录数    private int totalCount;// 总记录数    private int totalPage;// 总页数    private List<T> list;// 查询结果集    public PageBean() {    }    public int getPage() {        return page;    }    public void setPage(int page) {        this.page = page;    }    public int getLimit() {        return limit;    }    public void setLimit(int limit) {        this.limit = limit;    }    public int getTotalCount() {        return totalCount;    }    public void setTotalCount(int totalCount) {        this.totalCount = totalCount;    }    public int getTotalPage() {        return totalPage;    }    public void setTotalPage(int totalPage) {        this.totalPage = totalPage;    }    public List<T> getList() {        return list;    }    public void setList(List<T> list) {        this.list = list;    }    @Override    public String toString() {        return "PageBean{"                  "page="   page                  ", limit="   limit                  ", totalCount="   totalCount                  ", totalPage="   totalPage                  ", list="   list                  '}';    }}

结果集使用泛型主要是为了能够通用所有的类型

分页实现

package com.shop.service.impl;import com.shop.dao.ProductDao;import com.shop.dao.impl.ProductDaoImpl;import com.shop.domain.PageBean;import com.shop.domain.Product;import com.shop.service.ProductService;import java.util.List;public class ProductServiceImpl implements ProductService {    ProductDao productDao = new ProductDaoImpl();@Override    public PageBean<Product> findByPage(int page) {        PageBean<Product> pageBean = new PageBean<>();// 设置当前页数        pageBean.setPage(page);// 设置每页显示记录数        int limit = 6;        pageBean.setLimit(limit);// 调用Dao层的方法查询总记录数        int totalCount = productDao.findCount();        pageBean.setTotalCount(totalCount);// 设置总页数        int totalPage;        if (totalCount % limit == 0)            totalPage = totalCount / limit;        else            totalPage = totalCount / limit   1;        pageBean.setTotalPage(totalPage);// 查询结果集的起始位置可以推倒公式为(page - 1) * limit        int begin = (page - 1) * limit;        List<Product> list = productDao.findByPage(begin, limit);        pageBean.setList(list);        return pageBean;    }}
package com.shop.dao.impl;import com.shop.dao.ProductDao;import com.shop.domain.Category;import com.shop.domain.Product;import com.shop.utils.JDBCUtils;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class ProductDaoImpl implements ProductDao {    @Override    public int findCount() {        Connection connection = null;        PreparedStatement statement = null;        ResultSet resultSet = null;        Long count = 0L;        try {            connection = JDBCUtils.getConnection();            String sql = "select count(*) count from product";            statement = connection.prepareStatement(sql);            resultSet = statement.executeQuery();            if (resultSet.next()) {                count = resultSet.getLong("count");            }        } catch (Exception e) {            e.printStackTrace();        } finally {            JDBCUtils.release(resultSet, statement, connection);        }        return count.intValue();    }    @Override    public List<Product> findByPage(int begin, int limit) {        Connection connection = null;        PreparedStatement statement = null;        ResultSet resultSet = null;        List<Product> list = new ArrayList<>();        try {            connection = JDBCUtils.getConnection();            String sql = "select * from product limit ?, ?";            statement = connection.prepareStatement(sql);            statement.setInt(1, begin);            statement.setInt(2, limit);            resultSet = statement.executeQuery();            while (resultSet.next()) {                Product product = new Product();                product.setPid(resultSet.getInt("pid"));                product.setPname(resultSet.getString("pname"));                product.setAuthor(resultSet.getString("author"));                product.setPrice(resultSet.getDouble("price"));                product.setDescription(resultSet.getString("description"));                product.setFilename(resultSet.getString("filename"));                product.setPath(resultSet.getString("path"));                list.add(product);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            JDBCUtils.release(resultSet, statement, connection);        }        return list;    }}
来源:https://www.icode9.com/content-2-899701.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JAVA MYSQL做分页
分页功能之PageBean
Tags
S2SH项目实现分页功能
ssh2分页解决方案
分页技术
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服