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/ ...
随机推荐
- Android : Found byte-order-mark in the middle of a file
1. 首先,打包App,然后打包报错, views里提示,要加上 android { lintOptions { checkReleaseBuilds false //不检查发布版中的错误 abort ...
- 结合mysql 架构分析SQL查询语句和更新语句的执行
结合mysql 架构分析SQL查询语句和更新语句的执行 一:基础架构 mysql分为Server层和存储引擎层 Server层 涵盖了大多数mysql的核心服务功能,以及所有内置的函数(例如日期.加密 ...
- Go实现常用的排序算法
一.插入排序 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 4.重复步骤3,直到找到 ...
- 音视频入门-6-ffmpeg小实验-从v4l2层获取PC ubuntu摄像头图像
0. 进行本代码实验的前提 确保已经在ubuntu内正确安装了ffmpeg 手把手安装教程可以参考我的另一篇博文<音视频入门-4-ffmpeg命令快速体验音视频开发/ ffmpeg编译过程经历的 ...
- BC1.2和PD 充电的区别
USB Battery Charging Specification 1.2(BC1.2)和 USB Power Delivery(USB PD)是两个不同的充电标准,它们在应用场景.充电能力.充电协 ...
- 2023年8月中国数据库排行榜:TiDB 重夺榜眼,PolarDB 再进一位
斗力频催鼓.争都更少筹. 2023年8月的 墨天轮中国数据库流行度排行 在炎炎夏日中火热出炉,本月共有286个数据库参与排名.本月排行榜前十中,头部变动加剧.TiDB 发奋图强重夺榜眼,阿里云Pola ...
- iOS中UIlabel多行文本展示使用小结
最近在项目开发中遇到了一个新的需求,就是菜单标题最多两行展示,一行展示的标签顶部和两行展示的标签顶部对齐.看到要求后,第一反应是这是什么奇葩的设计,但是没办法谁让别人是产品经理呢.细细思索后,代码如下 ...
- vue项目中的package.json的private选项的作用
{ "name": "项目名称", "description": "描述", "version": ...
- 25. http 常见状态码
状态码的分类: 2xx:表明请求被成功接收并处理 : 3xx:表示要完成请求,需要进一步操作. 通常,这些状态代码用来重定向 :重定向就是 从 a 地址跳转到 b 地址 : 4xx:客户端错误,请求错 ...
- 4收4发ARINC429模块
USB 2.0 Hi-Speed (480Mbits /s)* 发送通道:每路发送通道FIFO大小为511 x 32bit(CHR32904) 缓存256条发送消息(CHR32904-EX)发送FI ...