mysql分页查询出租房屋信息_分页查询信息(使用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
*/
public List find(int page){
// 创建List
List list = new ArrayList();
// 获取数据库连接
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 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("" + 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与分页条来分页显示商品的数据。
代码如下:
pageEncoding="UTF-8"%>
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
所有商品信息
td{font-size: 12px;}
h2{margin: 0px}
所有商品信息 |
||||
ID | 商品名称 | 价格 | 数量 | 单位 |
List list = (List)request.getAttribute("list");
for(Product p : list){
%>
}
%>
5.编写程序中的主页index.jsp,在其中编写分页查询商品信息的超链接指向FindServlet.
代码如下:
pageEncoding="UTF-8"%>
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Insert title here
查看所有商品信息
原文:http://www.cnblogs.com/pmfei/p/5923329.html
mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...相关推荐
- jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...
Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...
- mysql印度时区_【工作记录】JDBC连接MySQL,跨时区调查CST转Asia/Shangha
根据业务要求,不同的国家设置jvm参数,来确定当前时区. // -Duser.timezone=Asia/Kolkata 印度加尔各答 GMT+05:30 // -Duser.timezone=Asi ...
- 通过JDBC连接Oracle数据库时进行查询操作时产生BigDecimal转换异常的处理
使用MySQL的时候不太会出现这样的情况,因为MySQL的数据类型比较明确,都有对应的类型可以进行操作,而Oracle的基本数据类型都是number类型的,从Oracle查到的数据到Java中很容易产 ...
- java JDBC连接MySQL数据库调用存储过程进行查询
java JDBC连接MySQL数据库调用存储过程进行查询 主程序代码 工具类 文件信息 存储过程 结果截图 主程序代码 package Mysql;import util.JDBCUtils; im ...
- JDBC连接MySQL数据库,访问数据库信息完成登录功能——保姆级详细教程(附所有java和jsp源代码)
目录 前言 JDBC的介绍 通过JDBC连接MySQL数据库 导入mysql驱动 连接数据库 连接数据库 判断连接是否成功 使用数据库实现登录 获取前端表单的用户输入 判断用户名和密码为空 查询表 判 ...
- jdbc连接云数据库mysql数据库_如何通过JDBC连接MySQL数据库
通过JDBC连接MySQL数据库,代码中的JDBC链接格式如下: jdbc:mysql://:/?sslmode=verify-full&sslrootcert= 表1参数说明参数 说明 如果 ...
- 修改sqlarchemy源码使其支持jdbc连接mysql
注意:本文不会将所有完整源码贴出,只是将具体的思路以及部分源码贴出,需要感兴趣的读者自己实验然后实现吆. 缘起 公司最近的项目需要将之前的部分业务的数据库连接方式改为jdbc,但由于之前的项目都使用s ...
- JDBC连接MySQL数据库代码模板
下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...
- jdbc连接mysql驱动包_jdbc连接数据库驱动包
FineReport如何用JDBC连接阿里云ADS数据库 在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我 ...
最新文章
- 深度分析Java的枚举类型——枚举的线程安全性及序列化问题
- ajax 同步和异步的区别|已迁移
- gin HTTP/2 服务器推送
- Jenkins部署Python项目实战
- 深入理解javascript之this
- boost::hana::detail::ebo用法的测试程序
- codeforces 1060 A
- jvm锁_JVM如何处理锁
- 【 Grey Hack 】万金油脚本:常见端口修改Password
- 关于 C++ 中输入输出的猜想
- 引路蜂地图API:Gis.Location包定义
- 一步步学习SPD2010--第十二章节--理解可用性和可接入性(5)--测试可用性
- python对称加密算法库_对称加密算法
- 实用,开源,生成朋友圈转发点赞截图小工具一枚
- 那些年,我们一起卸载过的软件…
- 微信公众号过程中都有哪些技巧,提升公众号活跃度
- Ae 表达式语言引用​:Comp
- 【小白】【新手向】Hexo+Github搭建个人博客
- 【JavaScript】实现移动小精灵
- Allegro焊盘种类
热门文章
- Linux游戏市场,Tacoma上的Nixie Pixel以及更多开放游戏新闻
- python中英文字频率_python 统计英语文档词汇出现频率,以六级真题为例
- openssl-genras命令简单入门
- PhotoshopCC2019(64位)下载+安装教程
- React State
- hostent实例详解
- 【渝粤教育】电大中专跨境电子商务理论与实务 (13)作业 题库
- Torch知识点总结【持续更新中......】
- DM6467的CAN模块调试(SPI转CAN)
- 华为大数据HCIP认证(HCIP-Big Data Developer V2.0) 考试大纲