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专门写个脚本去弄,今天就和大家分享一下,如何利用手边常用的软件和工具,不用写一 ...
随机推荐
- 基于Centos6.6的R720服务器四网口端口聚合的实践
服务器多网口端口聚合,其目的主要在于网卡容灾和提升带宽.linux端口绑定,提供7种模式,如下: 关于mode共有0-6等7种模式,详细请参考官方手册!mode的值表示工作模式,他共有0,1,2,3, ...
- 基于PXE的Centos无人值守安装(Win平台)
一.环境准备 PXE服务器端 1.工具 tftpd32 (下载)用于提供DHCP和ftp服务 hfs (下载) 用于提供安装软件的http方式下载 Kickstart ...
- 总结的git操作命令小抄集
.gitignore 本地仓库主目录下,用于定义提交时忽略的文件 git add <file-name> 将修改或新增的文件存入暂存区 git reset HEAD <fil ...
- php 项目简单分类
项目分为:客户需求和自行研发. 商城项目:------------------------商城分类:单商家:商家就是网站所有者.如京东.凡客. 多商家:如淘宝 网站所有者不是卖家. ...
- hdu_5787_K-wolf Number(数位DP)
题目链接:hdu_5787_K-wolf Number 题意: 给你一个区间,让你找满足任意k个数位内都没有相同的数字的个数 题解: 因为k不大,就直接将当前pos的前k-1个数传进去就行了 #inc ...
- hdu_2955_Robberies(01背包)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意:给一个概率p和n个银行,每个银行有一些钱和被抓的概率,问在满足被抓的概率在p以下,抢到的最 ...
- nefu 115 斐波那契的整除
Description 已知斐波那契数列有如下递归定义,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前几项可以表示为1, 1,2 ,3 ,5 ,8,13, ...
- Go-new和make
new返回指向struct的指针,new仅分配内存,而不对对象的值进行初始化 make返回到strcut的对象,而不是指针,只能创建map,slice,channel对象 make([]string, ...
- 算法:1!+(1!+3!)+(1!+3!+5!) + ( 1! + 3! + 5! + 7! + 9!)+....+(1!+3!+5!+ ... + m!)
-(void)touchesBegan:(nonnull NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event{ / ...
- 登录验证的js;JS验证邮箱 验证密码
var auth_email = 0, auth_pwd = 0, auth_captcha = 0, url_ajax = "/protected/user_ajax.php"; ...