今天做了一个通用的针对Mysql的分页,以前也发表过,不过是不是通用的!废话不多说,呈现代码!
第一步,建立数据库:
create table student(
id int primary key auto_increment,
code varchar(50),
name varchar(50),
sex varchar(10),
age int,
political varchar(50),
origin varchar(50),
professional varchar(50)
) ;
insert into student(code, name, sex, age, political, origin, professional)
values('200820459432', 'zhangsan', 'male', 24, 'tuan_yuan','China', 'SoftWare') ;
insert into student(code, name, sex, age, political, origin, professional)
values('200820233442', 'lisi', 'femal', 23, 'dang_yuan','China', 'Computer') ;
第二步,建立javabean:
package com.page.domain ;
public class Student {
private Integer id ;
private String code ;
private String name ;
private String sex ;
private Integer age ;
private String political ;
private String origin ;
private String professional ;
public String toString(){
return "id : " + id + ";\ncode : " + code + ";\nname : " + name + ";\nsex : " +sex+
";\nage : " +age+ ";\npolitical : " +political+ ";\norigin : "
+ origin +";\nprofessional : " + professional;
} ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPolitical() {
return political;
}
public void setPolitical(String political) {
this.political = political;
}
public String getOrigin() {
return origin;
}
public void setOrigin(String origin) {
this.origin = origin;
}
public String getProfessional() {
return professional;
}
public void setProfessional(String professional) {
this.professional = professional;
}
}
第三步,写分页工具page.java和domainPage.java
package com.ext.util;
import java.util.* ;
public class Page {
//结果集
private List<?> list ;
//查询总记录数
private int totalRecords ;
//每页多少条数据
private int pageSize ;
//第几页
private int pageNo ;
/**
* 总页数
* @return
*/
public int getTotalPages(){
return (totalRecords + pageSize -1) / pageSize ;
}
/**
* 取得首页
* @return
*/
public int getTopPageNo(){
return 1 ;
}
/**
* 上一页
* @return
*/
public int getPreviousPageNo(){
if(pageNo <= 1){
return 1 ;
}
return pageNo - 1 ;
}
/**
* 下一页
* @return
*/
public int getNextPageNo(){
if(pageNo >= getBottomPageNo()){
return getBottomPageNo() ;
}
return pageNo + 1 ;
}
/**
* 取得尾页
* @return
*/
public int getBottomPageNo(){
return getTotalPages() ;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
package com.ext.util;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.ext.util.DBUtil;
import com.ext.util.Page;
public class DomainPage {
private static Class<?> c ;
private static String tableName ;
private static Field[] field ;
private static String[] attributes ;
private static void init(String domainClass) throws Exception{
c = Class.forName(domainClass) ;
tableName = c.getSimpleName() ;
field = c.getDeclaredFields() ;
attributes = new String[field.length] ;
for(int i=0; i<field.length; i++){
attributes[i] = field[i].getName() ;
}
}
public static Page getDomainPage(Connection conn, int pageNo, int pageSize, String domainClass, Object sort) throws Exception{
Page page = null ;
List list = null ;
Object domainObj = null ;
Object attributeObj = null ;
String sql = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
init(domainClass) ;
sql = getSql() ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setObject(1, sort) ;
pstmt.setInt(2, (pageNo-1)*pageSize) ;
pstmt.setInt(3, pageNo*pageSize) ;
rs = pstmt.executeQuery() ;
list = new ArrayList() ;
while(rs.next()){
domainObj = c.newInstance() ;
for(int i=0; i<field.length; i++){
field[i].getClass() ;
attributeObj = rs.getObject(field[i].getName()) ;
field[i].setAccessible(true) ;
field[i].set(domainObj, attributeObj) ;
}
list.add(domainObj) ;
}
page = new Page() ;
page.setList(list) ;
page.setTotalRecords(getTotalRecords(conn,tableName)) ;
page.setPageNo(pageNo) ;
page.setPageSize(pageSize) ;
return page ;
}
private static String getSql(){
StringBuffer sbSql = new StringBuffer("select ") ;
for(int i=0; i<field.length; i++){
sbSql.append(attributes[i]) ;
if(i<field.length-1){
sbSql.append(", ") ;
}
}
sbSql.append(" from ")
.append(tableName)
.append(" order by ? limit ?,?") ;
return sbSql.toString() ;
}
private static int getTotalRecords(Connection conn, String tableName) throws Exception{
String sql = "select count(*) from " + tableName;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
int count = 0 ;
try{
pstmt = conn.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
rs.next() ;
count = rs.getInt(1) ;
}finally{
DBUtil.close(rs) ;
DBUtil.close(pstmt) ;
}
return count ;
}
}
第四步:写测试代码:
package com.domain.manager;
import java.sql.Connection;
import java.util.Iterator;
import com.ext.util.DBUtil;
import com.ext.util.DomainPage;
import com.ext.util.Page;
import com.page.domain.Student;
public class StudentManager {
public static void main(String[] args) throws Exception {
Student stu = new Student() ;
Connection conn = DBUtil.getConnection() ;
Page page = DomainPage.getDomainPage(conn, 1, 10, Student.class.getName(), "id") ;
for(Iterator<?> iter = page.getList().iterator(); iter.hasNext();){
stu = (Student) iter.next() ;
System.out.println(stu) ;
}
}
}
第五步,就可以看到运行结果了:
id : 1;
code : 200820459432;
name : zhangsan;
sex : male;
age : 24;
political : tuan_yuan;
origin : China;
professional : SoftWare
id : 2;
code : 200820233442;
name : lisi;
sex : femal;
age : 23;
political : dang_yuan;
origin : China;
professional : Computer
分享到:
相关推荐
总结起来,实现`java web mysql 通用分页`需要结合前端和后端的协同工作,通过合理的SQL构造和优化,以及良好的用户体验设计,来提供高效、安全且易用的分页功能。在实践中,可以借助各种成熟的框架和工具,如Spring...
本文将深入探讨MySQL中的通用分页实现,并结合实例进行解析。 首先,我们需要了解SQL中的基本分页查询语句。在MySQL中,最常用的分页查询方法是结合`LIMIT`和`OFFSET`关键字。`LIMIT`用于指定每页显示的数据量,而`...
本篇文章将深入探讨MySQL存储过程在实现通用分页中的应用。 首先,让我们理解什么是分页。分页是数据库查询结果的一种展示方式,它将大量的数据分成若干个小部分,每次只显示一部分,这样用户可以逐页浏览,避免一...
这里的"accss,mysql,asp通用分页,自定义分页样式"就是一个关于如何在ASP(Active Server Pages)环境下,结合Access和MySQL数据库实现分页功能,并且自定义分页样式的主题。 首先,让我们从数据库层面理解。...
本通用分页存储过程经过我的验证,可以使用,支持联表查询,支持单表查询,效率我没测过太多,应该还可以。有需要的拿去用。 如果测试出效率,我们可以交流交流
通用Mysql分页存储过程,支持多表查询。
Mysql分页通用存储过程
【描述】中提到的"通用分页工具",通常会包含一个工具类或服务,用于处理数据的分页查询。开发者只需要传入必要的参数(如当前页、每页记录数等),就可以获取到分页结果,同时工具可能还会提供动态生成分页链接等...
Mybatis通用分页插件是Java开发中广泛使用的ORM(对象关系映射)框架扩展,主要针对Mybatis进行优化,提供了高效便捷的分页功能。这个插件的目的是简化在数据库查询时的分页操作,使得开发者能够更专注于业务逻辑,...
### Oracle、SQL、MySQL 实现分页查询方法详解 在数据库操作中,分页查询是一项非常重要的技术,尤其是在处理大量数据时。本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server...
这个"java通用分页代码实例"提供了一种适用于任意数据库的解决方案,具有高可移植性和易用性。 分页的核心在于对数据库查询结果进行分割,只返回当前页面所需的数据,同时提供翻页链接或按钮,允许用户浏览更多的...
超级强悍的java web通用分页组件,只要简单的一条sql语句就可以轻松的实现分页,目前对oracle,SQL Server2005,SQL server200,mysql都做了实现,程序通过接口来封装,你可以实现对其他数据库的分页。里面有调用例子...
本文将详细探讨"JAVA写的通用分页"这一主题,结合描述中的"通用高效分页存储过程实现",我们将深入理解Java分页的原理、实现方式以及优化策略。 首先,分页的基本概念是将大量数据分块展示,而不是一次性加载所有...
**PHP通用分页程序** 在Web开发中,数据量大的时候,为了提高用户体验,通常会使用分页技术来展示信息。PHP是一种广泛使用的服务器端脚本语言,特别适合于Web开发,因此,PHP通用分页程序是开发人员常用的一种工具...
本文将深入探讨如何利用Spring的JdbcTemplate进行MySQL数据库的分页查询,并对其进行封装,提高代码的复用性和可维护性。 首先,了解Spring JdbcTemplate的基本用法。JdbcTemplate是Spring提供的一个模板类,用于...
在这个项目中,"SSM实现通用分页"指的是通过这三个框架来实现数据的分页展示功能,这在大数据量的网页展示中尤为重要,可以有效提升用户体验并减轻服务器压力。 首先,Struts2作为MVC框架,负责处理HTTP请求和响应...
【jsp通用分页】是指在Java Web开发中,利用JSP技术实现数据库查询结果的分页展示。在处理大量数据时,为了提高用户体验和减轻服务器压力,通常会采用分页的方式来展示数据。JDBC(Java Database Connectivity)作为...
HOHO~~其实我的代码有很多不足,例如:是不是可以做成通用的分页?也可以把DBlink()中的conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiuzhou","root","123456");用的连接参数写在xml中生成一个...
本知识点将围绕“Java通用分页”这一主题展开,探讨其核心概念、实现方式以及相关工具。 首先,我们需要理解分页的基本原理。分页通常涉及到两个关键参数:当前页码(Page Number)和每页显示的记录数(Page Size)...
本文将详细探讨Java中的通用分页实现方法。 首先,我们要理解分页的基本概念。分页主要包括两个关键参数:当前页码(Page Number)和每页显示条数(Page Size)。通过这两个参数,我们可以计算出当前页面应该显示的...