package readxls;
import java.lang.reflect.*;
import java.util.*;
public class PageControl {
private int curPage = 1;// 当前是第几页
private int maxPage = 1;// 一共有多少页
private int maxRowCount = 1;// 一共有多少行
private int rowsPerPage = 20;// 每页有多少行
private List dataList;// 装载每页的数据
private String turnPageContent = "";
private void countMaxPage() { // 根据总行数计算总页数
if (this.maxRowCount % this.rowsPerPage == 0) {
this.maxPage = this.maxRowCount / this.rowsPerPage;
} else {
this.maxPage = this.maxRowCount / this.rowsPerPage + 1;
}
}
public static int getBeginIndex(int pageIndex,int maxRowCount,int rowsPerPage) {
int countPage = 0;
if (maxRowCount % maxRowCount == 0) {
countPage = maxRowCount / rowsPerPage;
} else {
countPage = maxRowCount / rowsPerPage + 1;
}
return countPage;
}
/**
* 多个函数使用分页,使用反射机制实现,测试完成
*
* @param template
* 实现的逻辑类
* @param SetResultMethod
* 逻辑类中获取数据列表的方法名称
* @param SetAvailableCountMethod
* 逻辑类中获取数据列表总数的方法名称
* @param pgIndex
* 当前页码
* @param whereObject
* 查询条件
* @throws Exception
*/
public void loadDate(Object template, String SetResultMethod,
Integer pgIndex, Object whereObject,Integer maxCount)
throws Exception {
try {
/*
* 多个函数使用分页,使用反射机制实现,待测试
*/
Method resultMethod = template.getClass().getMethod(
SetResultMethod,
new Class[] { List.class, Integer.class, Integer.class });
this.maxRowCount = maxCount.intValue();
countMaxPage();
curPage = pgIndex.intValue();
if (curPage < 1) {
curPage = 1;
}
if (curPage > maxPage) {
curPage = maxPage;
}
int begin = (curPage - 1) * rowsPerPage;
Object[] rinArgs = new Object[3];
rinArgs[0] = whereObject;
rinArgs[1] = new Integer(begin);
rinArgs[2] = new Integer(rowsPerPage);
dataList = (List) resultMethod.invoke(template, rinArgs);
} catch (Exception e) {
throw e;
}
}
public void setDataList(List dataList) {
this.dataList = dataList;
}
public void setDataList(List dataList, int maxRowCount, int pgIndex) {
this.dataList = dataList;
this.maxRowCount = maxRowCount;
countMaxPage();
curPage = pgIndex;
if (curPage < 1) {
curPage = 1;
}
if (curPage > maxPage) {
curPage = maxPage;
}
}
public List getDataList() {
return dataList;
}
public void setRowsPerPage(int rowsPerPage) {
this.rowsPerPage = rowsPerPage;
}
public int getMaxPage() {
return this.maxPage;
}
public void setMaxRowCount(int maxRowCount) {
this.maxRowCount = maxRowCount;
}
public int getMaxRowCount() {
return this.maxRowCount;
}
public void setMaxRowCount(Object template,String SetAvailableCountMethod,Object whereObject){
/*
* 多个函数使用分页,使用反射机制实现
*/
Object[] ainArgs = new Object[1];
ainArgs[0] = (ArrayList) whereObject;
try {
Method availableCountMethod = template.getClass().getMethod(
SetAvailableCountMethod, new Class[] {List.class });
maxRowCount =((Integer)availableCountMethod.invoke(template, ainArgs)).intValue();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public int getRowsPerPage() {
return this.rowsPerPage;
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public String getTurnPageContent() {
if (getMaxPage() > 1) {
turnPageContent = "每页" + getRowsPerPage() + "行 ";
turnPageContent += "共" + getMaxRowCount() + "条记录 ";
turnPageContent += "第" + getCurPage() + "页 ";
turnPageContent += "共" + getMaxPage() + "页 ";
if (getCurPage() == 1) {
turnPageContent += "首页 上一页";
} else {
turnPageContent += "<A HREF=\"javascript:gotoPage(1)\">首页</A> ";
turnPageContent += "<A HREF=\"javascript:gotoPage("
+ (getCurPage() - 1) + ")\">上一页</A>";
}
turnPageContent += " ";
if (getCurPage() == getMaxPage()) {
turnPageContent += "下一页 尾页";
} else {
turnPageContent += "<A HREF=\"javascript:gotoPage("
+ (getCurPage() + 1) + ")\">下一页</A> ";
turnPageContent += "<A HREF=\"javascript:gotoPage("
+ getMaxPage() + ")\">尾页</A> ";
}
turnPageContent += "转到第<input type=\"text\" name=\"jumpPage\" value=\""
+ getCurPage()
+ "\" size=\"5\" onkeyup=\"if(/[^0-9]/g.test(this.value)){this.value=this.value.substr(0,this.value.length-1)}\">页";
// turnPageContent += " <img src=\"images/go_1.gif\"
// border=\"0\" style=\"cursor:hand\" onclick=\"Jumping()\"><input
// type=\"button\" onclick=\"Jumping()\" value=\"跳转\"
// class=\"button\">";
turnPageContent += " <img src=\"images/go_1.gif\" border=\"0\" style=\"cursor:hand\" onclick=\"Jumping()\">";
} else {
turnPageContent = "共" + getMaxRowCount() + "条记录 ";
}
return this.turnPageContent;
}
}
2.使用分页方法的类
public class useMethod(){
public String signFeedbackList() throws Exception{
String pageIndex="1";
if(request.getParameter("pageIndex")!=null
&& ! request.getParameter("pageIndex").trim.equal("") ){
pageIndex=request.getParameter("pageIndex").trim();
}
PageControl pgControl=new PageControl();
PubInfoDaoImp imp=new PubInfoDaoImp ();
List whereList=new ArrayList();
String info=request.getParameter("info");
//加条件
whereList.add("info_id='"+info+"'");
pgControl.loadDate(imp,"","",new Integer(pageIndex),whereList);
List dataList=pgControl.getDataList();
request.setAttribute("pgControl",pgControl);
}
}
3.PubInfoDaoImp 类
public class PubInfoDaoImp extends FoundDaoTemplate implements PubInfoDao {
private static Logger logger = Logger.getLogger(PubInfoDaoImp.class);
// 查看信息根据分页
public List getSignInfoByCondition(List whereList, Integer pageIndex,
Integer rowsPerPage) {
String sql = "select * from f_zd_pubinfo where 1=1";
List list = new ArrayList();
if (whereList != null) {
for (int i = 0; i < whereList.size(); i++) {
sql = sql + " and " + (String) whereList.get(i);
}
}
sql = sql + " order by PI_COMMUNITY,INFO_ID desc";
sql = "select * from ( select a.*, rownum rnum from (" + sql
+ ") a where rownum <= ? ) where rnum > ?";
FounderJdbcTemplate template = this.getJdbcTemplate();
list = template.queryForList(sql, new Object[] {
new Integer(pageIndex.intValue() + rowsPerPage.intValue()),
pageIndex });
return list;
}
// 查看总数
public int getMaxCount(List whereList) throws Exception {
String sql_count = "select count(*) from f_zd_pubinfo where 1=1";
if (whereList != null) {
for (int i = 0; i < whereList.size(); i++) {
sql_count = sql_count + " and " + (String) whereList.get(i);
}
}
FounderJdbcTemplate template = this.getJdbcTemplate();
int maxCount = 0;
maxCount = template.queryForInt(sql_count);
return maxCount;
}
4.在页面中
signList.jsp
<%
PageControl pgControl=(PageControl)request.getAttribute("pgControl");
%>
加:<script type="text/javascript">
function gotoPage(pageIndex){
document.form1.action="xxx.action?pageIndex="+pageIndex;
document.form1.submit();
}
function Jumping(){
var pageIndex=document.form1.jumpPage.value;
gotoPage(pageIndex);
return;
}
</script>
在<body>中
<td><%=pgControl.getTurnPageContent()%></td>
相关推荐
反射泛型完美版分页.rar
反射泛型完美版分页.rar
在C#中使用反射方式实现传参,参数为object,要转换参数时需要使用IEnumerable
项目场景: 我在写一个点胶机的胶线编辑器时,需要实现一个撤销重做的功能。 问题描述: ,在C#中使用反射方式实现传参,参数为object,要转换参数时需要使用IEnumerable,不然取不到想要的值。 参数委托端: //获取方法信息 执行反命令 MethodInfo methodInfo =info.Target.GetType().GetMethod(x.Value.UnName); ParameterInfo[] p = methodInfo.GetParameters(); if (p.C
使用反射分页,
使用反射分页,并自动封装成对象,最后返回一个对象集合
关于利用Java反射,进行数据分页、模糊查询、排序的方法封装尝试
1.工具类 import lombok.SneakyThrows; import org.apache.commons.lang.StringUtils; import java.lang.reflect.Field; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; /** * Created by fht on 2021/5/7 */ public class Da
手把手教你用srec_cat生成带CRC校验的STM32固件(解决OTA常见校验失败问题)
本文针对STM32 OTA升级中常见的固件校验失败问题,提供了一套使用srec_cat工具自动生成带CRC32校验固件的实战解决方案。文章详细拆解了命令参数,指导开发者如何为固件嵌入CRC值、处理地址偏移及合并文件,从而确保Bootloader能可靠校验固件完整性,提升远程更新的稳定性。
防火墙旁挂组网
分析拓扑结构,涉及路由器、交换机、防火墙。步骤包括基础 IP 配置、OSPF、防火墙双机热备、安全策略等。第一步,路由器配置。R5、R6 连接 ISP 和核心交换机,配置接口 IP,然后 OSPF。然后防火墙,双机热备的 HRP、VRRP,还有安全策略。接着交换机,划分 VLAN,配置 TRUNK,加入 OSPF。
Java基于反射的内存分页排序
Java基于反射的内存分页排序序言应用场景程序源码 序言 提到分页,我想大部分开发者首先会想到数据库分页技术。是的,正常情况下分页排序我们都会交给数据库来做,毕竟这么做省时省力。凡是都有例外,当我们的业务逻辑或者查询数据无法通过一条sql完成时,这时我们就需要把所有的数据查询出来,在内存中进行排序分页。 应用场景 提到内存,我们就要知道如果数据量过大,本篇分享就不再适用。这里主要是针对成千上万条数据可以这么多,超出10万条以上,最好不要这么做,因为无论是执行效率还是内存CPU占用都是非常大的。 程序源码 因
实战指南 | 快速修复Adobe Acrobat 2020安装过程中的常见注册表错误
本文提供了Adobe Acrobat 2020安装过程中遇到“无法打开键”注册表错误的详细修复指南。通过安全编辑注册表,精准定位并删除残留键值,可快速解决此常见安装报错,确保软件顺利安装。同时,文章也介绍了其他安装问题的应对策略与预防措施。
分页代码
分页的方式: 页面分页 数据库分页(现在通用的分页方式):一次取数据的一部分,尽量采取数据库 机制来实现! 除了SQL 和 Access外 其他的数据库都提供了数据库分页机制,现在来用通用的分页方法来实现:游标分页! 本代码是基于java的反射机制实现! 首先:在数据库连接时给定参数,代码:Class.forName("sun.j
AXI backpressure反压机制代码
本文将xilinx的axi读写代码进行修改,实现吞吐量达到50%
全面解读AI Infra:架构、生态与未来趋势
文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为
分页控件 实战 Post篇
2019独角兽企业重金招聘Python工程师标准>>> ...
科研生产力革命:手把手教你打造基于大模型的Research Agent(文献调研+论文写作+思路激发)
本文介绍了如何利用Research Agent(科研智能体)提升科研效率。Research Agent能自主完成文献检索、信息整合和报告生成全流程,省去50%以上的基础工作时间。文章详细讲解了搭建运行环境的方法,包括工具准备和MetaGPT配置,并提供了两种实战方案:基础版Search-O1和专业版MetaGPT Research Agent。此外,还介绍了如何为垂直领域定制Agent,以及优化检索效果、改善报告逻辑等技巧。最后列举了学术研究、行业分析、内容创作和个人学习四大应用场景,帮助用户将AI从聊天工
通用分页版本三
文章目录分页版本概念通用思路通用baseDao讲解效果图总结 分页版本 版本参考链接 分页一 https://blog.youkuaiyun.com/licmi/article/details/106441305 分页二 https://blog.youkuaiyun.com/licmi/article/details/106461125 概念 将上一次查询请求再发一次,只不过页码变了 通用思路 相信大家跟我一样,刚开始了解通用分页时不懂,不知道哪里通用了,还是感觉代码很多。 我举个例子,假如我有4张表需要实现
RT-DETR改进前必看 - Ultralytics调参 1:1还原RT-DETR官方版本实验环境,更方便改进
的项目文件中集成了YOLOv3v5v6v8v9v10rt-detr11以及其中不同大小的模型结构,更方便我们学习和使用。的参数配置在路径下,其中中设置了模型在训练Train验证Val/Test预测Predict可视化Visualize导出Export超参数Hyperparameters、以及跟踪Tracker的相关参数。在调参过程中主要涉及训练Train和超参数Hyperparameters。下面主要介绍一下初始超参数Hyperparameters。
OpenMM | PDBFixer 用于蛋白质预处理
PDBFixer 用于蛋白质预处理
jsp通用分页展示分页
通用分页1通用分页核心思路所需环境编码 通用分页核心思路 核心思路: 将上一次的查询请求再发一次,只不过是页码发生了改变! 所需环境 编码 jar包: 这里用的mysql数据库,所以导入了第二个jar包 Util包中的类: 其中Encoding类是处理中文乱码,config是用来连接mysql数据库,还有pageBean工具类,pageBean中写了分页页码,页大小,总记录数的属性方法 DBHelper: package com.shegx.util; import java.io.InputStr
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
通用分页(一)
通用分页 什么是通用分页: 是自己封装一个工具类,在不同类型的数据需要分页时直接调用,更改里面的sql语句即可 分页的三要素 page 页码 视图层传递过来 rows 页大小 视图层传递过来 total 总记录数 后台查出来 控制 page 页码代码 /** * 获得起始记录的下标 * * @return ...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
Web用户控件开发--分页控件
分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一些可以分页的数据控件,但其分页功能并不尽如人意。本文对于这些数据控件的假分页暂且不表,如有不明白的同学请百Google度之。 本文中实现的分页控件是在手动分页基础上做的改善,将分页实现的逻辑部分和数据控件的绑定尽可能分开,以克服手工编写分页代码任务繁琐、代码重用率低等问题。 本文依旧是一粒粟子。 一、分页控件素颜 ...
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
mysql 通用分页_通用分页(一)
packagecom.GeneralPaging.util;importjava.awt.print.Pageable;importjava.lang.reflect.Field;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayLis...
springCloud+Vue改造品优购第二章--------品牌管理分页功能后端完成
分页+条件查询的实现方式大概有两类 - 封装成对象的方式 - 封装成Map的形式 这里采取封装成map传参的实现 具体代码如下 TbBrandMapper.xml <select id="getPage" resultType="java.util.Map"> select a.* from tb_brand a where 1 = 1...
SSH公共action集成easyui分页+模型驱动
package com.kayo.bos.web.action;import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map;import org.springframework.data.domain.Page;imp
Mybatis 札记(三、分页、注解开发)麻雀虽小,五脏俱全
一:分页 思考:为什么需要分页? 原因:减少数据的处理量 方式一:使用Limit分页 语法: select * from user limit startIndex , pageSize ; 使用MyBatis实现分页,核心SQL 1、接口 2、Mapper.xml 3、测试 方式二:使用RowBounds分页 (了解即可) sql照常查询全部, 只是在测试代码中需传入rowBounds的对象 方式三:使用 PageHelper (了解即可) 官网:https://pagehelper.gith
spring-data-jpa实现vo类的动态添加查询
最近开始使用spring-data-jpa,它对于实体类的基本查询非常方便,vo查询还是需要写sql,动态条件的查询则需要继承JpaSpecificationExecutor<T>来实现,网上例子非常多。这里找到一个封装不错的例子,配置查询条件的注解就可以使用动态条件的查询,原文地址:https://blog.youkuaiyun.com/a184838158/article/details/82...
Hibernate 多表查询分页核心代码
java 代码 /** * 多表分页,然后影射成JAVABEAN * @param sqlcount HSQL计算多表查询的总数 * @param sqllist HSQL多表查询的语句 * @return List * @throws InvocationTargetExceptio...
1707



被折叠的 条评论
为什么被折叠?



