分页查询信息eclipse+jdbc+mysql.docx
- 文档编号:26614220
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:14
- 大小:29.44KB
分页查询信息eclipse+jdbc+mysql.docx
《分页查询信息eclipse+jdbc+mysql.docx》由会员分享,可在线阅读,更多相关《分页查询信息eclipse+jdbc+mysql.docx(14页珍藏版)》请在冰豆网上搜索。
分页查询信息eclipse+jdbc+mysql
分页查询信息eclipse+jdbc+mysql
————————————————————————————————作者:
———————————————————————————————— 日期:
ﻩ
分页查询信息
使用jdbc连接mysql数据库实现分页查询任务
通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上。
本项目时一个简单的运用eclipse+jdbc+mysql的小程序。
连接的数据库名称为db_database11,属性如下:
1.创建名为com.pmf.bean的包,包中是名为Product的类,用于封装商品信息。
全部代码如下:
packagecom.pmf.bean;
/**
*商品
*
*/
public classProduct {
publicstatic finalintPAGE_SIZE=2;
ﻩ//编号
ﻩprivateintid;
ﻩ// 名称
privateStringname;
ﻩ//价格
privatedouble price;
//数量
ﻩprivate intnum;
// 单位
privateStringunit;
ﻩ
publicintgetId(){
ﻩreturnid;
ﻩ}
public voidsetId(intid){
ﻩthis.id =id;
ﻩ}
ﻩpublicStringgetName(){
returnname;
ﻩ}
public voidsetName(Stringname){
ﻩthis.name=name;
}
ﻩpublicdoublegetPrice(){
ﻩﻩreturnprice;
ﻩ}
ﻩpublicvoidsetPrice(doubleprice){
this.price=price;
}
publicint getNum(){
ﻩﻩreturnnum;
ﻩ}
publicvoid setNum(intnum){
ﻩﻩthis.num=num;
ﻩ}
publicStringgetUnit(){
return unit;
ﻩ}
ﻩpublic voidsetUnit(Stringunit){
ﻩthis.unit=unit;
ﻩ}
}
2.创建名为“BookDao”的类,主要用于封装商品数据库的相关操作。
在BookDao类中首先编写getConnection()方法,用于创建Connection对象。
接着创建商品信息的分页查询方法find(),其中page参数用于传递要查询的页码。
在分页查询过程中还需要获取信息的总记录数,用于计算商品信息的总页数。
此方法写在findCount()方法中。
代码如下:
package com.pmf.bean;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
import java.util.List;
/**
*商品数据库操作
*
*/
public classBookDao{
ﻩ/**
*获取数据库连接
*@returnConnection对象
*/
ﻩpublicConnection getConnection(){
ﻩ//数据库连接
ﻩﻩConnectionconn =null;
ﻩtry {
ﻩ//加载数据库驱动,注册到驱动管理器
ﻩﻩﻩClass.forName("com.mysql.jdbc.Driver");
ﻩ//数据库连接字符串
ﻩﻩStringurl="jdbc:
mysql:
//localhost:
3306/db_database11";
ﻩﻩ// 数据库用户名
ﻩﻩﻩStringusername ="root";
ﻩﻩ//数据库密码
Stringpassword="123123";
ﻩﻩ//创建Connection连接
ﻩconn=DriverManager.getConnection(url,username,password);
ﻩﻩ}catch (ClassNotFoundException e){
ﻩe.printStackTrace();
ﻩ} catch(SQLExceptione) {
e.printStackTrace();
}
ﻩﻩ//返回数据库连接
return conn;
ﻩ}
ﻩ/**
ﻩ*分页查询所有商品信息
ﻩ*@parampage页数
ﻩ *@returnList
*/
publicList<Product>find(intpage){
ﻩ//创建List
ﻩList<Product>list =newArrayList<Product>();
ﻩ//获取数据库连接
ﻩﻩConnectionconn=getConnection();
ﻩﻩ//分页查询的SQL语句
Stringsql="select*fromtb_product order byiddesc limit?
,?
";
ﻩtry{
ﻩ//获取PreparedStatement
ﻩPreparedStatementps= 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
ﻩﻩProductp=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(SQLExceptione) {
ﻩe.printStackTrace();
ﻩﻩ}
ﻩﻩreturn list;
}
ﻩ
ﻩ/**
ﻩ*查询总记录数
ﻩ*@return总记录数
*/
public intfindCount(){
ﻩﻩ//总记录数
ﻩﻩintcount=0;
//获取数据库连接
ﻩConnection conn =getConnection();
ﻩ//查询总记录数SQL语句
ﻩString sql= "selectcount(*)from tb_product";
try {
ﻩ//创建Statement
ﻩStatementstmt=conn.createStatement();
ﻩﻩ//查询并获取ResultSet
ﻩﻩResultSetrs=stmt.executeQuery(sql);
ﻩﻩ// 光标向后移动,并判断是否有效
if(rs.next()){
//对总记录数赋值
ﻩﻩﻩcount =rs.getInt
(1);
ﻩ}
ﻩ//关闭ResultSet
rs.close();
ﻩﻩ//关闭Connection
ﻩﻩconn.close();
ﻩ}catch(SQLExceptione) {
ﻩﻩe.printStackTrace();
ﻩﻩ}
ﻩ// 返回总记录数
returncount;
ﻩ}
}
3.创建一个名为“FindServlet”的类位于com.pmf.servlet中。
此类是分页查询商品信息的Servlet对象。
在该类中写doGet()方法处理分页请求。
代码如下:
package com.pmf.servlet;
importjava.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
import com.pmf.bean.Product;
importcom.pmf.bean.BookDao;
/**
*Servlet implementation class FindServlet
*/
publicclass FindServlet extendsHttpServlet{
ﻩprivate staticfinallongserialVersionUID=1L;
ﻩ
ﻩprotected voiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException, IOException{
ﻩﻩ//当前页码
ﻩint currPage =1;
//判断传递页码是否有效
ﻩif(request.getParameter("page")!
=null){
//对当前页码赋值
ﻩﻩﻩcurrPage= Integer.parseInt(request.getParameter("page"));
ﻩﻩ}
ﻩ//实例化ProductDao
ﻩﻩBookDaodao=new BookDao();
ﻩﻩ//查询所有商品信息
List ﻩ//将list放置到request之中 ﻩrequest.setAttribute("list",list); ﻩ// 总页数 ﻩint pages; //查询总记录数 ﻩintcount=dao.findCount(); //计算总页数 if(count %Product.PAGE_SIZE==0){ ﻩﻩ//对总页数赋值 ﻩpages =count/ Product.PAGE_SIZE; ﻩ}else{ ﻩﻩ//对总页数赋值 ﻩpages=count/Product.PAGE_SIZE +1; ﻩ} ﻩﻩ//实例化StringBuffer StringBuffersb= newStringBuffer(); ﻩ//通过循环构建分页条 ﻩfor(inti=1;i<=pages;i++){ ﻩ//判断是否为当前页 ﻩﻩif(i==currPage){ ﻩ//构建分页条 ﻩﻩﻩsb.append("『"+i +"』"); ﻩ}else{ ﻩ// 构建分页条 ﻩﻩﻩsb.append("<a href='FindServlet? page=" +i+"'>" +i+" ﻩﻩﻩ} ﻩﻩ//构建分页条 ﻩ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//DTDHTML4.01 Transitional//EN"""> <%@pageimport="java.util.List"%> <%@pageimport="com.pmf.bean.Product"%> td{font-size: 12px;} ﻩh2{margin: 0px} </style> <tablealign="center"width="450"border="1"height="180"bordercolor="white"bgcolor="black" cellpadding="1"cellspacing="1"> ﻩ ﻩ ﻩ</td> </tr> ﻩ <td><b>IDb> ﻩ<td><b>商品名称 ﻩﻩ ﻩﻩ<td>数量</b></td> </tr> ﻩ<% ﻩﻩList ﻩfor(Productp : list){ %> <tr align="center"bgcolor="white"> ﻩﻩ<td><%=p.getId()%> ﻩﻩ ﻩ<td><%=p.getPrice()%></td> ﻩ ﻩ <%ﻩ ﻩ} ﻩ%> ﻩ <tdalign="center" colspan="5"bgcolor="white"> ﻩﻩ<%=request.getAttribute("bar")%> ﻩﻩ </table>所有商品信息</h2>
单位</b></td> </td>