分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

         分页查询信息

      使用jdbc连接mysql数据库实现分页查询任务

通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上。

本项目时一个简单的运用eclipse+jdbc+mysql的小程序。

连接的数据库名称为db_database11,属性如下:

1.创建名为com.pmf.bean的包,包中是名为Product的类,用于封装商品信息。

全部代码如下:

package com.pmf.bean;

/**

* 商品

*

*/

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;

}

}

2.创建名为“BookDao”的类,主要用于封装商品数据库的相关操作。在BookDao类中首先编写getConnection()方法,用于创建Connection对象。接着创建商品信息的分页查询方法find(),其中page参数用于传递要查询的页码。在分页查询过程中还需要获取信息的总记录数,用于计算商品信息的总页数。此方法写在findCount()方法中。

代码如下:

package com.pmf.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;

/**

* 商品数据库操作

*

*/

public class BookDao {

/**

* 获取数据库连接

* @return Connection对象

*/

public Connection getConnection(){

// 数据库连接

Connection conn = null;

try {

// 加载数据库驱动,注册到驱动管理器

Class.forName("com.mysql.jdbc.Driver");

// 数据库连接字符串

String url = "jdbc:mysql://localhost:3306/db_database11";

// 数据库用户名

String username = "root";

// 数据库密码

String password = "123123";

// 创建Connection连接

conn = DriverManager.getConnection(url,username,password);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

// 返回数据库连接

return conn;

}

/**

* 分页查询所有商品信息

* @param page 页数

* @return List<Product>

*/

public List<Product> find(int page){

// 创建List

List<Product> list = new ArrayList<Product>();

// 获取数据库连接

Connection conn = getConnection();

// 分页查询的SQL语句

String sql = "select * from tb_product order by id desc limit ?,?";

try {

// 获取PreparedStatement

PreparedStatement ps = conn.prepareStatement(sql);

// 对SQL语句中的第1个参数赋值

ps.setInt(1, (page - 1) * Product.PAGE_SIZE);

// 对SQL语句中的第2个参数赋值

ps.setInt(2, Product.PAGE_SIZE);

// 执行查询操作

ResultSet rs = ps.executeQuery();

// 光标向后移动,并判断是否有效

while(rs.next()){

// 实例化Product

Product p = new Product();

// 对id属性赋值

p.setId(rs.getInt("id"));

// 对name属性赋值

p.setName(rs.getString("name"));

// 对num属性赋值

p.setNum(rs.getInt("num"));

// 对price属性赋值

p.setPrice(rs.getDouble("price"));

// 对unit属性赋值

p.setUnit(rs.getString("unit"));

// 将Product添加到List集合中

list.add(p);

}

// 关闭ResultSet

rs.close();

// 关闭PreparedStatement

ps.close();

// 关闭Connection

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

return list;

}

/**

* 查询总记录数

* @return 总记录数

*/

public int findCount(){

// 总记录数

int count = 0;

// 获取数据库连接

Connection conn = getConnection();

// 查询总记录数SQL语句

String sql = "select count(*) from tb_product";

try {

// 创建Statement

Statement stmt = conn.createStatement();

// 查询并获取ResultSet

ResultSet rs = stmt.executeQuery(sql);

// 光标向后移动,并判断是否有效

if(rs.next()){

// 对总记录数赋值

count = rs.getInt(1);

}

// 关闭ResultSet

rs.close();

// 关闭Connection

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

// 返回总记录数

return count;

}

}

3.创建一个名为“FindServlet”的类位于com.pmf.servlet中。此类是分页查询商品信息的Servlet对象。在该类中写doGet()方法处理分页请求。

代码如下:

package com.pmf.servlet;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.pmf.bean.Product;

import com.pmf.bean.BookDao;

/**

* Servlet implementation class FindServlet

*/

public class FindServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 当前页码

int currPage = 1;

// 判断传递页码是否有效

if(request.getParameter("page") != null){

// 对当前页码赋值

currPage = Integer.parseInt(request.getParameter("page"));

}

// 实例化ProductDao

BookDao dao = new BookDao();

// 查询所有商品信息

List<Product> list = dao.find(currPage);

// 将list放置到request之中

request.setAttribute("list", list);

// 总页数

int pages ;

// 查询总记录数

int count = dao.findCount();

// 计算总页数

if(count % Product.PAGE_SIZE == 0){

// 对总页数赋值

pages = count / Product.PAGE_SIZE;

}else{

// 对总页数赋值

pages = count / Product.PAGE_SIZE + 1;

}

// 实例化StringBuffer

StringBuffer sb = new StringBuffer();

// 通过循环构建分页条

for(int i=1; i <= pages; i++){

// 判断是否为当前页

if(i == currPage){

// 构建分页条

sb.append("『" + i + "』");

}else{

// 构建分页条

sb.append("<a href=‘FindServlet?page=" + i + "‘>" + i + "</a>");

}

// 构建分页条

sb.append(" ");

}

// 将分页条的字符串放置到request之中

request.setAttribute("bar", sb.toString());

// 转发到product_list.jsp页面

request.getRequestDispatcher("product_list.jsp").forward(request, response);

}

}

4.创建product_list.jsp页面,此页面通过获取查询结果List与分页条来分页显示商品的数据。

代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="java.util.List"%>

<%@page import="com.pmf.bean.Product"%><html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>所有商品信息</title>

<style type="text/css">

td{font-size: 12px;}

h2{margin: 0px}

</style>

</head>

<body>

<table align="center" width="450" border="1" height="180" bordercolor="white" bgcolor="black" cellpadding="1" cellspacing="1">

<tr bgcolor="white">

<td align="center" colspan="5">

<h2>所有商品信息</h2>

</td>

</tr>

<tr align="center" bgcolor="#e1ffc1" >

<td><b>ID</b></td>

<td><b>商品名称</b></td>

<td><b>价格</b></td>

<td><b>数量</b></td>

<td><b>单位</b></td>

</tr>

<%

List<Product> list = (List<Product>)request.getAttribute("list");

for(Product p : list){

%>

<tr align="center" bgcolor="white">

<td><%=p.getId()%></td>

<td><%=p.getName()%></td>

<td><%=p.getPrice()%></td>

<td><%=p.getNum()%></td>

<td><%=p.getUnit()%></td>

</tr>

<%

}

%>

<tr>

<td align="center" colspan="5" bgcolor="white">

<%=request.getAttribute("bar")%>

</td>

</tr>

</table>

</body>

</html>

5.编写程序中的主页index.jsp,在其中编写分页查询商品信息的超链接指向FindServlet.

代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<a href="FindServlet">查看所有商品信息</a>

</body>

</html>

 

时间: 2024-10-25 08:01:51

分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)的相关文章

我的第五个程序 java的JDBC连接mysql数据库 实现输入查询

import java.sql.*; import java.util.Scanner; public class JDBCTest { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入要查询的姓名:"); String search_name = sc.next(); /****************************连接配置

使用JDBC连接MySQL数据库--典型案例分析(八)----实现员工数据的分页查询

转载请注明:http://blog.csdn.net/uniquewonderq 问题: 使用JDBC连接Mysql数据库,实现对Emp表数据的分页查询功能. 方案: 对于较大的数据量,通常采用分页查询的方式.不同的数据库产品有不同的数据库级的分页查询策略.例如:Oracle通常使用rownum的方式:而Mysql使用limit的方式. Oracle采用rownum和子查询实现分页查询,SQL语句如下, select * from (select rownum rn,empno,ename,jo

Java基础102 完整的JDBC连接MySQL数据库和Oracle数据库的方法

本文知识点(目录): 1.jdbc连接MySQL数据库    2.jdbc连接Oracle数据库    3.附录[本文jdbc连接MySQL或Oracle数据库的全部代码(合起来,做对比)] 1.JDBC连接MySQL数据库 1.1.我用到的jar包 1.2.实例演示 MySQL建表语句 1 -- MySQL建表语句 2 create table user( 3 id number(5) primary key auto_increment, 4 account varchar(20) not

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制.

JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库

首先是JDBC 连接Oracle  数据库 package com.util; import com.pojo.UserInfo; import java.sql.*; public class DBConnection { private static Connection conn; private static String userName = "scott"; private static String passWord = "tiger"; privat

java用JDBC连接MySQL数据库的详细知识点

想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downloads/connector/j/ 2.MySQL数据库安装包的下载和安装:http://pan.baidu.com/s/1sleNubV 3.在dos命令窗口中对mysql进行配置和使用.配置如下: ①在开始菜单的搜索框中输入"cmd"命令. ②把安装mysql软件的路径到bin目录下输入

(详细)JAVA使用JDBC连接MySQL数据库(1)- 软件

欢迎任何形式的转载,但请务必注明出处. 1.jdk 点击查看安装和环境配置教程 2.Eclipse 点击进入官网下载 注意下载完成打开.exe后,出现下图界面,有很多版本供选择 本人目前在学JSP所以安装的是Java EE版本,初学者可以选择第一个Java Developers版本 3.Mysql 点击进入官网下载 点击进入推荐安装教程+环境配置 下载页面注意事项 (虽然选项只有32位的,但下载完成后32位和64位都会安装) (上面的是在线安装,下面的是离线安装,建议选择离线安装) 系列文章 (

JAVA使用JDBC连接MySQL数据库 二(2)

本文是对 <JAVA使用JDBC连接MySQL数据库 二>的改进. 上节使用的是PreparedStatement来执行数据库语句,但是preparedStatement需要传递一个sql语句参数,才能创建.然而,DBHelper类只是起到打开和关闭数据库的作用,所以sql语句是要放到应用层部分的,而不是放到DBHelper类中. 而statment不需要传递一个sql语句参数,就能创建. 修改部分如下: public class DBHelper { String driver = &quo