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
Mysql 通用分页的更多相关文章
- MySql通用分页存储过程
MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...
- mysql通用分页存储过程遇到的问题(转载)
mysql通用分页存储过程遇到的问题(转载) http://www.cnblogs.com/daoxuebao/archive/2015/02/09/4281980.html
- mysql通用分页存储过程遇到的问题
DELIMITER $$ USE `tsb_asksys`$$ DROP PROCEDURE IF EXISTS `P_viewPage`$$ CREATE DEFINER=`root`@`local ...
- oracle sqlserver mysql数据库分页
1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM tabl ...
- MySQL通用优化手册
转载: MySQL通用优化手册 内容提纲 MySQL的特点: 硬件.系统优化: MySQL 配置优化: SCHEMA设计优化: SQL 优化: 其他优化. MySQL 的特点 首先,需要明确的是.想要 ...
- 用Java实现异构数据库的高效通用分页查询功能
不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了. 网上常见的SQL Server和O ...
- MySQL的分页优化
今天下午,帮同事重写了一个MySQL SQL语句,该SQL语句涉及两张表,其中一张表是字典表(需返回一个字段),另一张表是业务表(本身就有150个字段,需全部返回),当然,字段的个数是否合理在这里不予 ...
- PHP通用分页(Pager)类
三种不同展示方式 附上style~ 1. 效果图1 2.效果图2 3. 效果图3 4. 分页类主体 <?php /** * PHP通用分页类 * show(2) 1 ... 62 63 6 ...
- ReactJS实现的通用分页组件
大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...
- SQL Server 2008 通用分页存储过程
1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...
随机推荐
- 淘宝订单信息获取接口API,淘宝打单发货接口
从事电商软件开发的小伙伴,在日常开发任务中,经常会遇到一个需求,就是将淘宝店铺的订单,同步到自己的内部订单管理系统OMS中,进行淘宝打单发货操作.我介绍下如何将订单同步下来,供各位参考.(注意:所有电 ...
- 【QT性能优化】QT性能优化之QT性能优化实战 QML优化 QT高性能 QT6系列视频课程 QT6 性能优化实战 QT高性能 QT原理源码 QML优化 GUI绘图原理源码
QT性能优化实战视频课程 QT6 Widgets高性能应用编程 1.课前考试 2.字符串优化(上) 3.字符串优化(下) 4.绘图优化(上) 5.绘图优化(下) 6.QT界面优化(上) 7.QT界面 ...
- 系统编程-进程-exec系列函数超级详解(带各种实操代码)
我的相关博文: 系统编程-进程-close-on-exec机制 PART1 exec系列函数功能简介 exec系列函数登场 常规操作是先fork一个子进程,然后在子进程中调用exec系列函数执行新的 ...
- docker安装及基本的镜像拉取
docker 使用存储库安装 卸载它们以及相关的依赖项. yum remove docker \ docker-client \ docker-client-latest \ docker-commo ...
- 北京智和信通PON.EPON.GPON运维解决方案,全面管理OLT.ONU等设备
高质量.高可靠.高安全性的网络已成为助力企事业单位高速发展的基石.PON网络采用先进的无源光纤通信技术与自动化融合,构建新兴一体化网络体系,可以有效构造安全可靠的生产办公网络.因此,交通.制造.能源. ...
- Windows11忘记开机密码重置
在锁屏页面按着shift键重启,找到命令行输入一下两行代码 copy c:\windows\system\system32\utilman.exe c:\windows\system32\utilma ...
- LeetCode 327. Count of Range Sum 区间和的个数
给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper.区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 ...
- MySQL9的3个新特性
本文讲解MySQL9的3个新特性:支持将JSON输出保存到用户变量.支持准备语句以及支持面向AI的向量存储. 17.12 MySQL9新特性1--支持将JSON输出保存到用户变量 从MySQL 9版 ...
- 主要将子文件下大量图片进行路径编号,并保存到csv文件当中。方便直接从文件读取图片路径以及其他图片信息
# coding: utf-8 #主要将子文件下大量图片进行路径编号,并保存到csv文件当中.方便直接从文件读取图片路径以及其他图片信息. #我做的是图像分割,所以存在三类分割区域:["la ...
- work中模板、主题、样式集、样式的作用和使用方法
[收藏]Word样式.样式集.主题.模版怎么区分?进来围观学习了~ 我们先来按照层次关系从小到大排序:样式<样式集<主题<模板 接下来,我们按照层次关系从小到大开始了解它们之间的的区 ...