分页查询信息

      使用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>

 

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

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

    import java.sql.*; import java.util.Scanner; public class JDBCTest { public static void main(String[ ...

  2. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  3. JDBC——使用JDBC连接MySQL数据库

    在JDBC--什么是JDBC一文中我们已经介绍了JDBC的基本原理. 这篇文章我们聊聊如何使用JDBC连接MySQL数据库. 一.基本操作 首先我们需要一个数据库和一张表: CREATE DATABA ...

  4. ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库

    1.MySQL存储过程   1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if  while)等等 的sql语句   1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...

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

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

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

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  7. JDBC连接MySQL数据库及示例

      JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一 ...

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

    想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...

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

    首先是JDBC 连接Oracle  数据库 package com.util; import com.pojo.UserInfo; import java.sql.*; public class DB ...

随机推荐

  1. 鸟哥的 Linux 私房菜Shell Scripts篇(三)

    参考: http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#script_be http://www.runoob.com/lin ...

  2. nginx重新安装 引起的问题

    问题描述: 今天开发测试环境的网站需要做https认证,默认安装的nginx没有 http_ssl_module 模块,需要重新加载nginx  安装  http_ssl_module ,我采用的是默 ...

  3. python2.7.15 + PyQt4部署

    安装python模块首先想到的就是 https://pypi.org/,但在上面下载的PyQt4的包却找不到安装的方法,于是找找试其它方法,下面介绍通过pip安装whl的安装方式 1.先打开 http ...

  4. CSS 中伪类的顺序

    因为css渲染方式的关系: 快速记忆方法:LoVe HAte 原则: L:link V:vistered H:hover A:active li :link { color: greenyellow; ...

  5. File类_常见的方法(获取目录中指定规则的内容)_listFiles

    import java.io.File; public class ListDemo { public static void main(String[] args) { ListDemo(); } ...

  6. P1057 传球游戏

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的: nnn 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球 ...

  7. centos 切换nginx跟apache环境

    启动nginx的启动 nginx -c /etc/nginx/nginx.conf 停止nginx的方法切换到apache. pkill -9 nginx 直接杀死运行中的程序,关闭nginx ser ...

  8. Linux中运行SpringBoot项目,永久运行

    将写好的springboot项目打成jar包: 项目右键 -- Run As -- Maven build... ---此时出现下图 1.Goals 中填写:install 2.Skip Tests复 ...

  9. mybatis逆向工程之maven工程

    maven工程与动态web工程存在差异,不过大体是相同的 注意:运行成功后记得refresh刷新下,否则看不到 一.在pom文件中进行如下配置 <project xmlns="http ...

  10. ES6生成器函数generator

    ES6生成器函数generator generator是ES6新增的一个特殊函数,通过 function* 声明,函数体内通过 yield 来指明函数的暂停点,该函数返回一个迭代器,并且函数执行到 y ...