zf-关于分页必写的代码
1 存储过程
ALTER PROCEDURE [dbo].[getStatForXXGKWeb]
@startDate varchar(50),
@endDate varchar(50),
@type varchar(2),
@page int, -- 必写的
@pageRows int,-- 必写的
@allrows int output-- 必写的
AS
declare @beginrow int-- 必写的
declare @endrow int-- 必写的
declare @maxpage int-- 必写的
create table #tmp_count (
sumnum int -- 必写的
)
declare @sql varchar(2000) -- 必写的
declare @sqlcount varchar(2000) -- 必写的
begin --必写的 写在 begin……end 中
set @sqlcount = 'insert into #tmp_count(sumnum) select count(1) from #tmp' exec(@sqlcount) select @allrows=sumnum from #tmp_count
if(@allrows=0)
set @maxpage=1
else
set @maxpage = (@allrows-1)/@pageRows+1
if @page > @maxpage
set @page=@maxpage
set @beginrow = (@page-1)*@pageRows+1
set @endrow = @page*@pageRows
if (@endrow > @allrows)
set @endrow = @allrows
end
2 java代码
ResultPage rs = publicInfoService.getWebXxgkStat(startDateTj,
// publicInfoService.getWebXxgkStat 这个要根据情况改
endDateTj, typeId,getPage(),BaseParameter.getPageRowsMiddle());
// typeId,getPage(),BaseParameter.getPageRowsMiddle()
// 这2个参数必写,如果没有那么要加上去,这样的话接口,实现类,存储过程的都要跟着加参数, 下面的也是必写的
if (rs != null) {
webxxgkListTj = rs.getResultList(); // webxxgkListTj 这个对象名也要根据情况改
setMaxPage(rs.getMaxPage());
setAllRows(rs.getAllRows());
setThisPageRows(rs.getPageRows());
public ResultPage getWebXxgkStat(String startDate,String endDate,String type,int page,int pageRows) throws Exception; // 接口这里 ResultPage 必须要返回这个类型
// 实现类一般都是这样的,照着改
class WebXxgkStatList implements RowCallbackHandler{
private List result = new ArrayList();
public void processRow(ResultSet rs) throws SQLException{
Hashtable tmp = new Hashtable();
tmp.put("orgId", rs.getObject(1));
tmp.put("orgname", rs.getObject(2));
tmp.put("orglayer", rs.getObject(3));
tmp.put("totalSum", rs.getInt(4));
tmp.put("ysqSum", rs.getInt(5));
tmp.put("yeartotalSum", rs.getInt(6));
tmp.put("bfb", rs.getObject(8));
tmp.put("sumT", rs.getInt(9));
result.add(tmp);
} private List getResult(){
return result;
}
}
// 特别是下面的这些代码,要写,参数名startDate,endDate,type 这3个要看情况换
WebXxgkStatList list = new WebXxgkStatList(); // 必写
Integer allrows = 0; // 必写
Object[] outobjs = new Object[]{allrows}; // 必写
execProcPage("getStatForXXGKWeb(?,?,?,?,?,?)", // 必写
new Object[] {startDate,endDate,type, page, pageRows},outobjs, list);// 必写
return new ResultPage(list.getResult(), (Integer)outobjs[0], page, pageRows);// 必写
}
3 jsp
<td colspan="4">
<%@ include file="../../include/pagination_czx.inc"%>
</td>
到目前为止,写了上面所有的代码之后,只能是说 <%@ include file="../../include/pagination_czx.inc"%> 引用的这个inc里面的代码只实现了部分
也就是说,jsp页面只是出现了:

出现了 可以点击 的按钮,但是看上面的87 88 这么说明并没有分页成功。。。
day02-第三天
而然我加了这些代码之后,就可以实现了一页显示前18条数据

set @sql='insert into #tmp1
select top ' + CAST((@endrow-@beginrow+1) as varchar(4)) + ' * from (
select top '+ CAST(@endrow as varchar(8)) + ' * from
(
select top '+ CAST(@endrow as varchar(8)) + ' * from #tmp ) as tmpp
) as tmpp1' exec(@sql) if(@sum=0)
update #tmp set bfb = 0.00
else
update #tmp set bfb = totalSum/@sum*100 update #tmp set sumT = @sum select * from #tmp1 order by orglayer,px desc --select * from PT_ORGAN where orglayer in (2,3,4) END --exec getStatForXXGKWeb '2011-01-01','2013-02-02',''
虽然解决了显示前18条数据,但是还是有个BUG,就是翻页之后还是第一页的数据,数据并没有变,我猜想有可能是我取的是前18条数据,
然后18条数据之后的数据都丢失了。

所以我准备把这段代码改一改试试看:

以下是 2015/10/09日更新
EOJ93(LQ6)CXXC.png)

存储过程原来可以直接update 临时表 不用搞成 字符串存到局部变量里再通过exec()执行
这里的分页我是改成了这个样子,我在#tmp临时表里添加了一个自增字段,然后我上面的存储过程就是根据自增字段进行的分页,同时#tmp1里也添加了一个一样的字段,不过不是自增的,因为要把tmp里面的数据插入到tmp1里去。tmp1就是用来装数据的,比如让页面是第二页的时候,这句存储过程只读取#tmp21-40行的数据,也就是只把#tmp的21-40行数据装入#tmp1,然后页面把tmp1里的数据显示出来。
这单子脱了3个月多终于完成了~
zf-关于分页必写的代码的更多相关文章
- 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]http ...
- 使用 TypeScript & mocha & chai 写测试代码实战(17 个视频)
使用 TypeScript & mocha & chai 写测试代码实战(17 个视频) 使用 TypeScript & mocha & chai 写测试代码实战 #1 ...
- 分享5种风格的 jQuery 分页效果【附代码】
jPaginate 是一款非常精致的分页插件,提供了五种不同风格的分页效果,支持鼠标悬停翻页,快速分页功能.这款插件还提供了丰富的配置选项,你可以根据需要进行设置. 效果演示 源码下载 各个 ...
- .net学习之Session、Cookie、手写Ajax代码以及请求流程
1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...
- jQuery之父:每天都写点代码
去年秋天,我的“兼职编程项目”遇到了一些问题:要不是从 Khan Academy 的项目里挪出时间来的话,我根本没办法将不理想的进度弥补上. 这些项目遇到了一些严重的问题.之前的工作我主要是在周末,有 ...
- Wix#可以直接写C#代码来生成Wix的MSI安装文
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Wix#可以直接写C#代码来生成Wix的MSI安装文.
- 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了
系统关闭窗体的事件顺序为: OnCloseQuery ----> OnClose ----> OnDestroy 下面的代码说明问题: unit Unit3; interface uses ...
- Lombok : 让你写 Java代码像C#一样爽
前言 我曾经是一名 .Net 开发,如今的我是一名 Java 开发者.在我享受着 Java 成熟的生态时,我常常怀念 c# 简洁的语法:自动属性.类型推断.自动初始化器 .... 鱼,我所欲也,熊掌亦 ...
- 不写一行代码,利用常用工具和软件批量下载URL资源
有时候会遇到这种情况:想从某个网站下载一批东西,目标URL是比较规整的,而且结构都一样(仅某些字段不同).但又懒得开IDE专门写个脚本去弄,今天就和大家分享一下,如何利用手边常用的软件和工具,不用写一 ...
随机推荐
- was性能调优
数据库设置 使用此页面来指定数据库会话支持的设置. 要查看此管理控制台页面,请单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name > ...
- Apriori算法-位运算-C语言
原文地址:http://blog.csdn.net/liema2000/article/details/6118423 //////////////////////////////////////// ...
- undefine refrence to "*******"
windows mingw gcc 编译出现莫名的错误 wsaaddresstostringa, 理解起来,应该是link的时候,出现的问题 (在console的日志栏也能看出来) 然后,在ECL ...
- Web开发人员不要错过的60款用户界面设计工具(中)
21. Dojo Dojo是一个用javascript语言实现的开源DHTML UI工具包,可实现高性能的桌面和移动应用程序开发,在国内亦有大量忠实用户. 22. Fivesecondtest Fiv ...
- apache 不执行PHP,显示代码
首先检查是否安装PHP,已经安装过的话,先执行 locate libphp5.so 查看APACHE是否有SO文件,如果没有,那就要重装PHP了,先执行php -i | grep configure ...
- java中的静态变量
大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中 ...
- hdu_4714_Tree2cycle(树形DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4714 题意:给你N个点N-1条边,形成一个树,让你拆树,并连接成一个环,每拆一次,连接一次,消耗1,问 ...
- C++ primer 练习 12.7
重做上一题,这次使用shared_ptr 而不是内置指针.上一题题目为:(编写函数,返回一个动态分配的int的vector.将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在ve ...
- SDCycleScrollView 添加初始滚动页码
最近在做一个无限轮播界面,由于自己写的有些卡顿,所以我使用了第三方框架SDCycleScrollView,但是我的初始滚动页不是从第一页开始怎么办,我想从第二页,第三页,或者最后一页,关于这个SDCy ...
- Jquery.Linq用法
下载:http://linqjs.codeplex.com/ LINQ Pad Enumerable.Range(0, 20).Where("$ % 3 == 0").Select ...