`
shanhestm
  • 浏览: 12914 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Mysql 通用分页

阅读更多

 

今天做了一个通用的针对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 通用分页

    总结起来,实现`java web mysql 通用分页`需要结合前端和后端的协同工作,通过合理的SQL构造和优化,以及良好的用户体验设计,来提供高效、安全且易用的分页功能。在实践中,可以借助各种成熟的框架和工具,如Spring...

    mysql 通用分页

    本文将深入探讨MySQL中的通用分页实现,并结合实例进行解析。 首先,我们需要了解SQL中的基本分页查询语句。在MySQL中,最常用的分页查询方法是结合`LIMIT`和`OFFSET`关键字。`LIMIT`用于指定每页显示的数据量,而`...

    mysql存储过程通用分页

    本篇文章将深入探讨MySQL存储过程在实现通用分页中的应用。 首先,让我们理解什么是分页。分页是数据库查询结果的一种展示方式,它将大量的数据分成若干个小部分,每次只显示一部分,这样用户可以逐页浏览,避免一...

    accss, mysql asp通用分页自定义分页样式

    这里的"accss,mysql,asp通用分页,自定义分页样式"就是一个关于如何在ASP(Active Server Pages)环境下,结合Access和MySQL数据库实现分页功能,并且自定义分页样式的主题。 首先,让我们从数据库层面理解。...

    通用分页存储过程(支持联表查询)

    本通用分页存储过程经过我的验证,可以使用,支持联表查询,支持单表查询,效率我没测过太多,应该还可以。有需要的拿去用。 如果测试出效率,我们可以交流交流

    通用Mysql分页存储过程

    通用Mysql分页存储过程,支持多表查询。

    Mysql分页通用存储过程

    Mysql分页通用存储过程

    基于hibernate_mysql分页通用源码

    【描述】中提到的"通用分页工具",通常会包含一个工具类或服务,用于处理数据的分页查询。开发者只需要传入必要的参数(如当前页、每页记录数等),就可以获取到分页结果,同时工具可能还会提供动态生成分页链接等...

    Mybatis通用分页插件

    Mybatis通用分页插件是Java开发中广泛使用的ORM(对象关系映射)框架扩展,主要针对Mybatis进行优化,提供了高效便捷的分页功能。这个插件的目的是简化在数据库查询时的分页操作,使得开发者能够更专注于业务逻辑,...

    Oracle,SQl,MySql实现分页查询

    ### Oracle、SQL、MySQL 实现分页查询方法详解 在数据库操作中,分页查询是一项非常重要的技术,尤其是在处理大量数据时。本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server...

    java通用分页代码实例.rar

    这个"java通用分页代码实例"提供了一种适用于任意数据库的解决方案,具有高可移植性和易用性。 分页的核心在于对数据库查询结果进行分割,只返回当前页面所需的数据,同时提供翻页链接或按钮,允许用户浏览更多的...

    java web Pager通用分页组件(源码)

    超级强悍的java web通用分页组件,只要简单的一条sql语句就可以轻松的实现分页,目前对oracle,SQL Server2005,SQL server200,mysql都做了实现,程序通过接口来封装,你可以实现对其他数据库的分页。里面有调用例子...

    JAVA写的通用分页

    本文将详细探讨"JAVA写的通用分页"这一主题,结合描述中的"通用高效分页存储过程实现",我们将深入理解Java分页的原理、实现方式以及优化策略。 首先,分页的基本概念是将大量数据分块展示,而不是一次性加载所有...

    PHP通用分页程序

    **PHP通用分页程序** 在Web开发中,数据量大的时候,为了提高用户体验,通常会使用分页技术来展示信息。PHP是一种广泛使用的服务器端脚本语言,特别适合于Web开发,因此,PHP通用分页程序是开发人员常用的一种工具...

    Spring jdbctemplate + mysql 分页封装

    本文将深入探讨如何利用Spring的JdbcTemplate进行MySQL数据库的分页查询,并对其进行封装,提高代码的复用性和可维护性。 首先,了解Spring JdbcTemplate的基本用法。JdbcTemplate是Spring提供的一个模板类,用于...

    SSM 实现通用分页

    在这个项目中,"SSM实现通用分页"指的是通过这三个框架来实现数据的分页展示功能,这在大数据量的网页展示中尤为重要,可以有效提升用户体验并减轻服务器压力。 首先,Struts2作为MVC框架,负责处理HTTP请求和响应...

    jsp通用分页

    【jsp通用分页】是指在Java Web开发中,利用JSP技术实现数据库查询结果的分页展示。在处理大量数据时,为了提高用户体验和减轻服务器压力,通常会采用分页的方式来展示数据。JDBC(Java Database Connectivity)作为...

    MySQL真分页(jsp版)

    HOHO~~其实我的代码有很多不足,例如:是不是可以做成通用的分页?也可以把DBlink()中的conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiuzhou","root","123456");用的连接参数写在xml中生成一个...

    java通用分页

    本知识点将围绕“Java通用分页”这一主题展开,探讨其核心概念、实现方式以及相关工具。 首先,我们需要理解分页的基本原理。分页通常涉及到两个关键参数:当前页码(Page Number)和每页显示的记录数(Page Size)...

    Java 通用分页

    本文将详细探讨Java中的通用分页实现方法。 首先,我们要理解分页的基本概念。分页主要包括两个关键参数:当前页码(Page Number)和每页显示条数(Page Size)。通过这两个参数,我们可以计算出当前页面应该显示的...

Global site tag (gtag.js) - Google Analytics