基于Mysql的通用分页

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

通用分页案例

实现效果

我只做了显示数据的通用分页效果:
通用分页实现效果

需要的jar包、工具类

jar包需要c标签包,MySQL包(用的啥数据库导什么包):
在这里插入图片描述
工具类(util),按顺序(连接数据库类、字符编码过滤类、做通用分页的类、连接数据库的配置文件):
在这里插入图片描述

解析项目代码

我们以前做分页每做一个对象的分页就要在这个对象的dao包中写很多关于分页的代码,为了增加代码的重用性,我们可以将相同内容的代码写一个工具类,增加写代码的效率,我们分为两步,查询满足条件的SQL语句(需要做分页,默认为true),查询满足条件指定页码的SQL语句(拼接根据页码查询的SQL语句),如图:

package com.zengjing.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.zengjing.entity.Recruitment;
import com.zengjing.util.DBAccess;
import com.zengjing.util.PageBean;

/**
 * 用来做通用分页、相同内容
 * @author jiang
 *
 * date 下午3:25:39
 */
public class BaseDao<k> {
   
   

	//匿名内部类
	public interface CallBack<k>{
   
   
		public List<k> foreach(ResultSet rs) throws SQLException;
	}
	
	public List<k> executeQuery(String sql,PageBean pageBean ,CallBack<k> callback){
   
   
		
		
		Connection con=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		
		if(pageBean!=null&&pageBean.isPagination()) {
   
   
		
			//1、查询满足条件的总记录数
			try {
   
   
				con=DBAccess.getConnection();
				String countSql=this.getCountSql(sql);
				System.out.println(countSql);
				ps=con.prepareStatement(countSql);
				rs=ps.executeQuery();
				if(rs.next()) {
   
   
					int total=rs.getInt(1);//总记录数
					pageBean.setTotal(total);//给pagebean的总记录数赋值
				}
			} catch (Exception e) {
   
   
				throw new RuntimeException(e);
			}finally {
   
   
				DBAccess.close(null, ps, rs);
			}
		}
		//第二个条件 查询指定页码并满足条件的总记录数
				try {
   
   
					if(con==null) {
   
   
						con=DBAccess.getConnection();
					}
					String pageSql=sql;
					if(pageBean!=null&&pageBean.isPagination()) {
   
   
						pageSql=this.getPageBean(sql, pageBean);
					}
					
					System.out.println(pageSql);
					ps=con.prepareStatement(pageSql);
					rs=ps.executeQuery();
					return callback.foreach(rs);
				} catch (Exception e) {
   
   
					throw new RuntimeException(e);
				}finally {
   
   
					DBAccess.close(con, ps, rs);
				}
				
	}
	
	/**
	 * 专门写一个方法用来拼接查询语句的统计满足条件的总行数
	 * @param sql
	 * @return
	 */
	public String getCountSql(String sql) {
   
   
		return "select count(*) from ("+sql+") t1 ";
	}
	/**
	 * 专门写一个方法用来存储拼接分页的sql
	 * @param sql
	 * @param pageBnea
	 * @return
	 */
	public String getPageBean(String sql,PageBean pageBnea) {
   
   
		System.out.println(pageBnea.getPage());
		return sql+" limit "+pageBnea.getStartsIndex()+","+pageBnea.getRows()+"";
	}
}

dao方法中查询请求直接返回调用通用分页类的方法,传递这个对象的baseDao和SQL语句,还有实现的匿名内部类:

package com.zengjing.dao;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.
mysql存储过程通用分页 NULL 博文链接:https://zhaoshijie.iteye.com/blog/1270970 立即下载

相关推荐

Blender建模:对于模型布线的一些思考

Blender布线中一些问题的总结和思考,主要讲述原理和解决方法。

baidu_38797690的博客 1823

深入解析BLheli电调固件与Dshot通讯协议:从原理到实践

本文深入解析了无人机动力系统的核心——BLheli电调固件与Dshot通讯协议。详细阐述了BLheli固件从经典版到BLheli_32的演进及其功能特性,并重点剖析了Dshot数字协议如何通过数据包和校验码实现更快、更准、更可靠的电机控制。文章还涵盖了双向Dshot遥测、实战配置与调参指南,帮助玩家充分释放无人机性能。

weixin_28273593的博客 434

unity | 动画模块之滚动选项框

动画模块之滚动选项框

菌菌兹的博客 2074

考试遇到 Assistant API 考点时,该掌握哪些要点?

【摘要】聚焦阿里云大模型 ACP 认证中智能体 Assistant API 考点,我结合自学认证成功经验,分享复习攻略。先解析 assistants、threads 等五个核心组件作用与关系,点明各组件支持及不支持的方法,最后给出计算 Python 代码调用大模型次数的思路,助力考生攻克考点、顺利拿证 。

davidkorhenn的博客 495

UE5.2 DynamicMesh避坑指南:从蓝图生成到物理碰撞的完整流程

本文详细解析了在UE5.2中使用DynamicMesh组件时,如何正确选择ADynamicMeshActor与AGeneratedDynamicMeshActor,并提供了从蓝图生成、初始化到配置物理碰撞的完整避坑流程。重点解决了SpawnActor失效、碰撞更新等常见问题,帮助开发者高效实现程序化网格生成与动态变形效果。

rrr55的博客 314

【机械臂算法】机械臂动力学参数辨识仿真

本文以puma560m机械臂为例子进行动力学参数辨识的讲解,puma560m可以在robotic toolbox中找到,这里以它真实机械臂对他的动力学参数进行辨识。此外这里还有要说的是,机械臂参数辨识其实是一个系统工程,其中和系统的机械、电子、嵌入式都有着很深的联系,并不是仿真这么简单的。

vrijheid的博客 7832

手把手教你学Simulink实例:基于Simulink的锂电池管理系统(BMS)仿真

是确保锂电池安全、高效运行的关键组件。BMS 主要功能包括监控电池的状态(如电压、电流、温度)、估算荷电状态(State of Charge, SOC)、健康状态(State of Health, SOH),以及实现电池均衡和保护机制等。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证锂电池管理系统的控制策略。常见的均衡方法包括被动均衡(通过电阻放电)和主动均衡(通过开关电容或变压器)。通过本教程,我们详细介绍了如何使用 Simulink 进行锂电池管理系统的仿真实例。

MHD0815的博客 538

【AI大模型应用开发】1.0 Prompt Engineering(提示词工程)- 典型构成、原则与技巧,代码中加入Prompt

Prompt典型构成、原则与技巧,以及OpenAI API重要参数解释,助你轻松入门Prompt

同学小张的博客 2580

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: jsp自定义标签(二)
下一篇: 通用分页之自定义标签控制前台显示
Jiang呀
博客等级 码龄7年 16粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值