分页的分析:
这是一个基于mysql的分页,分页的是时候只用总数和要显示的数据是查询出来!其他的是计算出来的,
//设置每页显示的行数
int pageSize = 5;
//这里模拟点击的页数
int currentPage = 4;
//把的一页设置成一,当然也可以设置成0;
int beginPage = 1;
在设置完了这些基本的参数后下面就是求出数据库的总数,使用count函数来统计,
使用dbutil这个工具实现
是用dbutil的QueryRunner 方法 这个方法简化了查询语句
查询总数的代码如下
String count = "select count(*) from product; ";
try {
Integer totalCount = run.query(conn, count,
new ResultSetHandler<Long>() {
public Long handle(ResultSet rs) throws SQLException {
while (rs.next()) {
return rs.getLong(1);
}
return 0l;
}
}, new Object[] {}).intValue();
在得到了总数的情况下毫无疑问的就是开始计算 ‘总页数’ ‘上一页’ ‘下一页’
‘尾页’ ‘开始数’
总页数的计算方法:
总页数 = 总量/每页显示的数量 ,再加一些判断就OK了
Integer totalPage = totalCount % pageSize >0 ? totalCount /pageSize+1: totalCount /pageSize
上页的计算方法:
如果当前页面—1 小于了beginPage(首页) 上页就等于首页 否则 currentPage (当前)页面—1;
Integer next = currentPage + 1 >= totalPage ? totalPage: currentPage + 1;
尾页就等于总页数
使用LIMIT 函数来求道需要的数据
LIMIT里面有两个参数 第一个参数是从什么地方开始查,第二个参数是差多少个
实现代码如下
// 总页数
Integer totalPage = (totalCount) % (pageSize) > 0 ? (totalCount)
/ (pageSize) + 1 : (totalCount) / (pageSize);
// 上一页
Integer previous = currentPage - 1 < beginPage ? previous = beginPage
: currentPage - 1;
// 下一页
Integer next = currentPage + 1 >= totalPage ? totalPage
: currentPage + 1;
// 尾页
Integer endPage = totalPage;
// 开始数
Integer start = (currentPage - 1) * pageSize;
String sql = "SELECT * FROM product LIMIT ?,?";
List<String> list = run.query(conn, sql,
new ResultSetHandler<List<String>>() {
public List<String> handle(ResultSet rs)
throws SQLException {
List<String> list = new ArrayList<String>();
while (rs.next()) {
list.add(rs.getString("productName"));
}
return list;
}
}, start, pageSize);
整个应用的代码如下:这是一个纯JDBC的分页,
package com.ttw.util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.junit.Test;
public class PaginationDemo {
MySQLutil mysql;
public PaginationDemo() {
mysql = MySQLutil.getInstance();
}
@Test
public void test() {
// 每页数
int pageSize = 6;
// 当前页
int currentPage = 2;
// 第一页
int beginPage = 1;
Connection conn = null;
conn = mysql.getConnection();
QueryRunner run = new QueryRunner();
String count = "select count(*) from product; ";
try {
Integer totalCount = run.query(conn, count,
new ResultSetHandler<Long>() {
public Long handle(ResultSet rs) throws SQLException {
while (rs.next()) {
return rs.getLong(1);
}
return 0l;
}
}, new Object[] {}).intValue();
// 总页数
Integer totalPage = (totalCount) % (pageSize) > 0 ? (totalCount)
/ (pageSize) + 1 : (totalCount) / (pageSize);
// 上一页
Integer previous = currentPage - 1 < beginPage ? previous = beginPage
: currentPage - 1;
// 下一页
Integer next = currentPage + 1 >= totalPage ? totalPage
: currentPage + 1;
// 尾页
Integer endPage = totalPage;
// 开始数
Integer start = (currentPage - 1) * pageSize;
String sql = "SELECT * FROM product LIMIT ?,?";
List<String> list = run.query(conn, sql,
new ResultSetHandler<List<String>>() {
public List<String> handle(ResultSet rs)
throws SQLException {
List<String> list = new ArrayList<String>();
while (rs.next()) {
list.add(rs.getString("productName"));
}
return list;
}
}, start, pageSize);
System.out.println(list);
System.out.println("首页: " + beginPage);
System.out.println("上一页: " + previous);
System.out.println("下一页: " + next);
System.out.println("尾页: " + endPage);
System.out.println("一共: " + totalCount + " 条");
System.out.println("当前是: " + currentPage + "/" + totalPage);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这是一个基于mysql的分页,分页的是时候只用总数和要显示的数据是查询出来!其他的是计算出来的,
//设置每页显示的行数
int pageSize = 5;
//这里模拟点击的页数
int currentPage = 4;
//把的一页设置成一,当然也可以设置成0;
int beginPage = 1;
在设置完了这些基本的参数后下面就是求出数据库的总数,使用count函数来统计,
使用dbutil这个工具实现
是用dbutil的QueryRunner 方法 这个方法简化了查询语句
查询总数的代码如下
String count = "select count(*) from product; ";
try {
Integer totalCount = run.query(conn, count,
new ResultSetHandler<Long>() {
public Long handle(ResultSet rs) throws SQLException {
while (rs.next()) {
return rs.getLong(1);
}
return 0l;
}
}, new Object[] {}).intValue();
在得到了总数的情况下毫无疑问的就是开始计算 ‘总页数’ ‘上一页’ ‘下一页’
‘尾页’ ‘开始数’
总页数的计算方法:
总页数 = 总量/每页显示的数量 ,再加一些判断就OK了
Integer totalPage = totalCount % pageSize >0 ? totalCount /pageSize+1: totalCount /pageSize
上页的计算方法:
如果当前页面—1 小于了beginPage(首页) 上页就等于首页 否则 currentPage (当前)页面—1;
Integer next = currentPage + 1 >= totalPage ? totalPage: currentPage + 1;
尾页就等于总页数
使用LIMIT 函数来求道需要的数据
LIMIT里面有两个参数 第一个参数是从什么地方开始查,第二个参数是差多少个
实现代码如下
// 总页数
Integer totalPage = (totalCount) % (pageSize) > 0 ? (totalCount)
/ (pageSize) + 1 : (totalCount) / (pageSize);
// 上一页
Integer previous = currentPage - 1 < beginPage ? previous = beginPage
: currentPage - 1;
// 下一页
Integer next = currentPage + 1 >= totalPage ? totalPage
: currentPage + 1;
// 尾页
Integer endPage = totalPage;
// 开始数
Integer start = (currentPage - 1) * pageSize;
String sql = "SELECT * FROM product LIMIT ?,?";
List<String> list = run.query(conn, sql,
new ResultSetHandler<List<String>>() {
public List<String> handle(ResultSet rs)
throws SQLException {
List<String> list = new ArrayList<String>();
while (rs.next()) {
list.add(rs.getString("productName"));
}
return list;
}
}, start, pageSize);
整个应用的代码如下:这是一个纯JDBC的分页,
package com.ttw.util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.junit.Test;
public class PaginationDemo {
MySQLutil mysql;
public PaginationDemo() {
mysql = MySQLutil.getInstance();
}
@Test
public void test() {
// 每页数
int pageSize = 6;
// 当前页
int currentPage = 2;
// 第一页
int beginPage = 1;
Connection conn = null;
conn = mysql.getConnection();
QueryRunner run = new QueryRunner();
String count = "select count(*) from product; ";
try {
Integer totalCount = run.query(conn, count,
new ResultSetHandler<Long>() {
public Long handle(ResultSet rs) throws SQLException {
while (rs.next()) {
return rs.getLong(1);
}
return 0l;
}
}, new Object[] {}).intValue();
// 总页数
Integer totalPage = (totalCount) % (pageSize) > 0 ? (totalCount)
/ (pageSize) + 1 : (totalCount) / (pageSize);
// 上一页
Integer previous = currentPage - 1 < beginPage ? previous = beginPage
: currentPage - 1;
// 下一页
Integer next = currentPage + 1 >= totalPage ? totalPage
: currentPage + 1;
// 尾页
Integer endPage = totalPage;
// 开始数
Integer start = (currentPage - 1) * pageSize;
String sql = "SELECT * FROM product LIMIT ?,?";
List<String> list = run.query(conn, sql,
new ResultSetHandler<List<String>>() {
public List<String> handle(ResultSet rs)
throws SQLException {
List<String> list = new ArrayList<String>();
while (rs.next()) {
list.add(rs.getString("productName"));
}
return list;
}
}, start, pageSize);
System.out.println(list);
System.out.println("首页: " + beginPage);
System.out.println("上一页: " + previous);
System.out.println("下一页: " + next);
System.out.println("尾页: " + endPage);
System.out.println("一共: " + totalCount + " 条");
System.out.println("当前是: " + currentPage + "/" + totalPage);
} catch (SQLException e) {
e.printStackTrace();
}
}
}