第一步,建立数据库:

  1. create table student(
  2. id int primary key auto_increment,
  3. code varchar(50),
  4. name varchar(50),
  5. sex varchar(10),
  6. age int,
  7. political varchar(50),
  8. origin varchar(50),
  9. professional varchar(50)
  10. ) ;
  11. insert into student(code, name, sex, age, political, origin, professional)
  12. values('200820459432', 'zhangsan', 'male', 24, 'tuan_yuan','China', 'SoftWare') ;
  13. insert into student(code, name, sex, age, political, origin, professional)
  14. values('200820233442', 'lisi', 'femal', 23, 'dang_yuan','China', 'Computer') ;

第二步,建立javabean:

  1. package com.page.domain ;
  2. public class Student {
  3. private Integer id ;
  4. private String code ;
  5. private String name ;
  6. private String sex ;
  7. private Integer age ;
  8. private String political ;
  9. private String origin ;
  10. private String professional ;
  11. public String toString(){
  12. return "id : " + id + ";\ncode : " + code + ";\nname : " + name + ";\nsex : " +sex+
  13. ";\nage : " +age+ ";\npolitical : " +political+ ";\norigin : "
  14. + origin +";\nprofessional : " + professional;
  15. } ;
  16. public int getId() {
  17. return id;
  18. }
  19. public void setId(int id) {
  20. this.id = id;
  21. }
  22. public String getCode() {
  23. return code;
  24. }
  25. public void setCode(String code) {
  26. this.code = code;
  27. }
  28. public String getName() {
  29. return name;
  30. }
  31. public void setName(String name) {
  32. this.name = name;
  33. }
  34. public String getSex() {
  35. return sex;
  36. }
  37. public void setSex(String sex) {
  38. this.sex = sex;
  39. }
  40. public int getAge() {
  41. return age;
  42. }
  43. public void setAge(int age) {
  44. this.age = age;
  45. }
  46. public String getPolitical() {
  47. return political;
  48. }
  49. public void setPolitical(String political) {
  50. this.political = political;
  51. }
  52. public String getOrigin() {
  53. return origin;
  54. }
  55. public void setOrigin(String origin) {
  56. this.origin = origin;
  57. }
  58. public String getProfessional() {
  59. return professional;
  60. }
  61. public void setProfessional(String professional) {
  62. this.professional = professional;
  63. }
  64. }

第三步,写分页工具page.java和domainPage.java

  1. package com.ext.util;
  2. import java.util.* ;
  3. public class Page {
  4. //结果集
  5. private List<?> list ;
  6. //查询总记录数
  7. private int totalRecords ;
  8. //每页多少条数据
  9. private int pageSize ;
  10. //第几页
  11. private int pageNo ;
  12. /**
  13. * 总页数
  14. * @return
  15. */
  16. public int getTotalPages(){
  17. return (totalRecords + pageSize -1) / pageSize ;
  18. }
  19. /**
  20. * 取得首页
  21. * @return
  22. */
  23. public int getTopPageNo(){
  24. return 1 ;
  25. }
  26. /**
  27. * 上一页
  28. * @return
  29. */
  30. public int getPreviousPageNo(){
  31. if(pageNo <= 1){
  32. return 1 ;
  33. }
  34. return pageNo - 1 ;
  35. }
  36. /**
  37. * 下一页
  38. * @return
  39. */
  40. public int getNextPageNo(){
  41. if(pageNo >= getBottomPageNo()){
  42. return getBottomPageNo() ;
  43. }
  44. return pageNo + 1 ;
  45. }
  46. /**
  47. * 取得尾页
  48. * @return
  49. */
  50. public int getBottomPageNo(){
  51. return getTotalPages() ;
  52. }
  53. public List<?> getList() {
  54. return list;
  55. }
  56. public void setList(List<?> list) {
  57. this.list = list;
  58. }
  59. public int getTotalRecords() {
  60. return totalRecords;
  61. }
  62. public void setTotalRecords(int totalRecords) {
  63. this.totalRecords = totalRecords;
  64. }
  65. public int getPageSize() {
  66. return pageSize;
  67. }
  68. public void setPageSize(int pageSize) {
  69. this.pageSize = pageSize;
  70. }
  71. public int getPageNo() {
  72. return pageNo;
  73. }
  74. public void setPageNo(int pageNo) {
  75. this.pageNo = pageNo;
  76. }
  77. }

package
com.ext.util;

  1. import java.lang.reflect.Field;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import com.ext.util.DBUtil;
  8. import com.ext.util.Page;
  9. public class DomainPage {
  10. private static Class<?> c ;
  11. private static String tableName ;
  12. private static Field[] field ;
  13. private static String[] attributes ;
  14. private static void init(String domainClass) throws Exception{
  15. c = Class.forName(domainClass) ;
  16. tableName = c.getSimpleName() ;
  17. field = c.getDeclaredFields() ;
  18. attributes = new String[field.length] ;
  19. for(int i=0; i<field.length; i++){
  20. attributes[i] = field[i].getName() ;
  21. }
  22. }
  23. public static Page getDomainPage(Connection conn, int pageNo, int pageSize, String domainClass, Object sort) throws Exception{
  24. Page page = null ;
  25. List list = null ;
  26. Object domainObj = null ;
  27. Object attributeObj = null ;
  28. String sql = null ;
  29. PreparedStatement pstmt = null ;
  30. ResultSet rs = null ;
  31. init(domainClass) ;
  32. sql = getSql() ;
  33. pstmt = conn.prepareStatement(sql) ;
  34. pstmt.setObject(1, sort) ;
  35. pstmt.setInt(2, (pageNo-1)*pageSize) ;
  36. pstmt.setInt(3, pageNo*pageSize) ;
  37. rs = pstmt.executeQuery() ;
  38. list = new ArrayList() ;
  39. while(rs.next()){
  40. domainObj = c.newInstance() ;
  41. for(int i=0; i<field.length; i++){
  42. field[i].getClass() ;
  43. attributeObj = rs.getObject(field[i].getName()) ;
  44. field[i].setAccessible(true) ;
  45. field[i].set(domainObj, attributeObj) ;
  46. }
  47. list.add(domainObj) ;
  48. }
  49. page = new Page() ;
  50. page.setList(list) ;
  51. page.setTotalRecords(getTotalRecords(conn,tableName)) ;
  52. page.setPageNo(pageNo) ;
  53. page.setPageSize(pageSize) ;
  54. return page ;
  55. }
  56. private static String getSql(){
  57. StringBuffer sbSql = new StringBuffer("select ") ;
  58. for(int i=0; i<field.length; i++){
  59. sbSql.append(attributes[i]) ;
  60. if(i<field.length-1){
  61. sbSql.append(", ") ;
  62. }
  63. }
  64. sbSql.append(" from ")
  65. .append(tableName)
  66. .append(" order by ? limit ?,?") ;
  67. return sbSql.toString() ;
  68. }
  69. private static int getTotalRecords(Connection conn, String tableName) throws Exception{
  70. String sql = "select count(*) from " +  tableName;
  71. PreparedStatement pstmt = null ;
  72. ResultSet rs = null ;
  73. int count = 0 ;
  74. try{
  75. pstmt = conn.prepareStatement(sql) ;
  76. rs = pstmt.executeQuery() ;
  77. rs.next() ;
  78. count = rs.getInt(1) ;
  79. }finally{
  80. DBUtil.close(rs) ;
  81. DBUtil.close(pstmt) ;
  82. }
  83. return count ;
  84. }
  85. }

第四步:写测试代码:

  1. package com.domain.manager;
  2. import java.sql.Connection;
  3. import java.util.Iterator;
  4. import com.ext.util.DBUtil;
  5. import com.ext.util.DomainPage;
  6. import com.ext.util.Page;
  7. import com.page.domain.Student;
  8. public class StudentManager {
  9. public static void main(String[] args) throws Exception {
  10. Student stu = new Student() ;
  11. Connection conn = DBUtil.getConnection() ;
  12. Page page = DomainPage.getDomainPage(conn, 1, 10, Student.class.getName(), "id") ;
  13. for(Iterator<?> iter = page.getList().iterator(); iter.hasNext();){
  14. stu = (Student) iter.next() ;
  15. System.out.println(stu) ;
  16. }
  17. }
  18. }

第五步,就可以看到运行结果了:

  1. id : 1;
  2. code : 200820459432;
  3. name : zhangsan;
  4. sex : male;
  5. age : 24;
  6. political : tuan_yuan;
  7. origin : China;
  8. professional : SoftWare
  9. id : 2;
  10. code : 200820233442;
  11. name : lisi;
  12. sex : femal;
  13. age : 23;
  14. political : dang_yuan;
  15. origin : China;
  16. professional : Computer

Mysql 通用分页的更多相关文章

  1. MySql通用分页存储过程

    MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...

  2. mysql通用分页存储过程遇到的问题(转载)

    mysql通用分页存储过程遇到的问题(转载) http://www.cnblogs.com/daoxuebao/archive/2015/02/09/4281980.html

  3. mysql通用分页存储过程遇到的问题

    DELIMITER $$ USE `tsb_asksys`$$ DROP PROCEDURE IF EXISTS `P_viewPage`$$ CREATE DEFINER=`root`@`local ...

  4. oracle sqlserver mysql数据库分页

    1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM tabl ...

  5. MySQL通用优化手册

    转载: MySQL通用优化手册 内容提纲 MySQL的特点: 硬件.系统优化: MySQL 配置优化: SCHEMA设计优化: SQL 优化: 其他优化. MySQL 的特点 首先,需要明确的是.想要 ...

  6. 用Java实现异构数据库的高效通用分页查询功能

    不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了. 网上常见的SQL Server和O ...

  7. MySQL的分页优化

    今天下午,帮同事重写了一个MySQL SQL语句,该SQL语句涉及两张表,其中一张表是字典表(需返回一个字段),另一张表是业务表(本身就有150个字段,需全部返回),当然,字段的个数是否合理在这里不予 ...

  8. PHP通用分页(Pager)类

    三种不同展示方式 附上style~ 1. 效果图1 2.效果图2    3. 效果图3 4. 分页类主体 <?php /** * PHP通用分页类 * show(2) 1 ... 62 63 6 ...

  9. ReactJS实现的通用分页组件

    大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...

  10. SQL Server 2008 通用分页存储过程

    1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...

随机推荐

  1. 淘宝订单信息获取接口API,淘宝打单发货接口

    从事电商软件开发的小伙伴,在日常开发任务中,经常会遇到一个需求,就是将淘宝店铺的订单,同步到自己的内部订单管理系统OMS中,进行淘宝打单发货操作.我介绍下如何将订单同步下来,供各位参考.(注意:所有电 ...

  2. 【QT性能优化】QT性能优化之QT性能优化实战 QML优化 QT高性能 QT6系列视频课程 QT6 性能优化实战 QT高性能 QT原理源码 QML优化 GUI绘图原理源码

    QT性能优化实战视频课程 QT6 Widgets高性能应用编程 1.课前考试 2.字符串优化(上) 3.字符串优化(下) 4.绘图优化(上) 5.绘图优化(下)  6.QT界面优化(上) 7.QT界面 ...

  3. 系统编程-进程-exec系列函数超级详解(带各种实操代码)

    我的相关博文: 系统编程-进程-close-on-exec机制 PART1  exec系列函数功能简介 exec系列函数登场 常规操作是先fork一个子进程,然后在子进程中调用exec系列函数执行新的 ...

  4. docker安装及基本的镜像拉取

    docker 使用存储库安装 卸载它们以及相关的依赖项. yum remove docker \ docker-client \ docker-client-latest \ docker-commo ...

  5. 北京智和信通PON.EPON.GPON运维解决方案,全面管理OLT.ONU等设备

    高质量.高可靠.高安全性的网络已成为助力企事业单位高速发展的基石.PON网络采用先进的无源光纤通信技术与自动化融合,构建新兴一体化网络体系,可以有效构造安全可靠的生产办公网络.因此,交通.制造.能源. ...

  6. Windows11忘记开机密码重置

    在锁屏页面按着shift键重启,找到命令行输入一下两行代码 copy c:\windows\system\system32\utilman.exe c:\windows\system32\utilma ...

  7. LeetCode 327. Count of Range Sum 区间和的个数

    给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper.区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 ...

  8. MySQL9的3个新特性

    本文讲解MySQL9的3个新特性:支持将JSON输出保存到用户变量.支持准备语句以及支持面向AI的向量存储. 17.12  MySQL9新特性1--支持将JSON输出保存到用户变量 从MySQL 9版 ...

  9. 主要将子文件下大量图片进行路径编号,并保存到csv文件当中。方便直接从文件读取图片路径以及其他图片信息

    # coding: utf-8 #主要将子文件下大量图片进行路径编号,并保存到csv文件当中.方便直接从文件读取图片路径以及其他图片信息. #我做的是图像分割,所以存在三类分割区域:["la ...

  10. work中模板、主题、样式集、样式的作用和使用方法

    [收藏]Word样式.样式集.主题.模版怎么区分?进来围观学习了~ 我们先来按照层次关系从小到大排序:样式<样式集<主题<模板 接下来,我们按照层次关系从小到大开始了解它们之间的的区 ...