JDBC分页查询及实现

本文探讨了数据库分页查询的重要性,详细解释了物理分页和逻辑分页的区别,重点介绍了如何利用JDBC和MySQL实现物理分页查询。通过实例展示了如何创建JavaBean、DAO以及Servlet来实现商品信息的分页展示。
摘要由CSDN通过智能技术生成

当数据过多时,一页之内是无法显示的,因此需要进行分页显示。
(一)分页技术实现:
物理分页:
- 在数据库执行查询时(实现分页查询),查询需要的数据—-依赖数据库的SQL语句
- 在sql查询时,从数据库只检索分页需要的数据
- 通常不同的数据库有着不同的物理分页语句
- 物理分页:Mysql/SQL Server/Oracle,每种数据数的写法是不同的
- mysql物理分页,采用limit关键字,SQL Server采用top,Oracle采用rowNum
- 例如,检索11-20条:select * from user limit 10,10;注意,索引从0开始,第一个10代表第11条,上述语句的含义是查询第11条到第20条

逻辑分页:
- 先查询所有数据到内存,再从内存截取需要的数据—-采用程序内部逻辑(先都查出来,再进行选择)
- 在sql查询时,先从数据库检索出所有数据的结果集
- 在程序内,通过逻辑语句获得分页需要的数据
- 例如,检索11-20条:userList.subList(10,20);
- ResultSet是JDBC API中封装的查询结果集对象,通过该对象可以实现数据的分页显示。通过ResultSet的光标实现分页,优点是在各种数据库上通用,缺点是占用大量资源,不适合数据量大的情况。(由于ResultSet分页存在性能方面的缺陷,在实际开发中,很多情况都是采用数据库提供的分页机制来实现分页查询功能)

(二)实例
通过MySQL数据库提供的分页机制,实现商品信息的分页查询功能,将分页数据显示在JSP页面
(1)JavaBean:用于封装商品信息

public class Product{
    public static final int PAGE_SIZE = 2//每页记录数
    private int id;//编号
    private String name;//名称
    private double price;//价格
    private int num;//数量
    private String unit;//单位
    public int getId(){
        return id;
    }
    public void setId(int id){
        this.id = id;
    }
        public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getUnit() {
        return unit;
    }
    public void setUnit(String unit) {
        this.unit = unit;
    }
}

由于每页记录数一般不会修改,因此将其定义为final类型(静态的final类型变量,通常情况下我们大写)。

按照DAO模式,接下来我们分别编写数据层和业务层

(2)创建名称为BookDao的类,用于封装数据库相关操作。

package com.megustas.bean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * 商品数据库操作
 *
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值