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日更新

存储过程原来可以直接update 临时表 不用搞成 字符串存到局部变量里再通过exec()执行

这里的分页我是改成了这个样子,我在#tmp临时表里添加了一个自增字段,然后我上面的存储过程就是根据自增字段进行的分页,同时#tmp1里也添加了一个一样的字段,不过不是自增的,因为要把tmp里面的数据插入到tmp1里去。tmp1就是用来装数据的,比如让页面是第二页的时候,这句存储过程只读取#tmp21-40行的数据,也就是只把#tmp的21-40行数据装入#tmp1,然后页面把tmp1里的数据显示出来。

这单子脱了3个月多终于完成了~

zf-关于分页必写的代码的更多相关文章

  1. 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]http ...

  2. 使用 TypeScript & mocha & chai 写测试代码实战(17 个视频)

    使用 TypeScript & mocha & chai 写测试代码实战(17 个视频) 使用 TypeScript & mocha & chai 写测试代码实战 #1 ...

  3. 分享5种风格的 jQuery 分页效果【附代码】

    jPaginate 是一款非常精致的分页插件,提供了五种不同风格的分页效果,支持鼠标悬停翻页,快速分页功能.这款插件还提供了丰富的配置选项,你可以根据需要进行设置. 效果演示      源码下载 各个 ...

  4. .net学习之Session、Cookie、手写Ajax代码以及请求流程

    1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...

  5. jQuery之父:每天都写点代码

    去年秋天,我的“兼职编程项目”遇到了一些问题:要不是从 Khan Academy 的项目里挪出时间来的话,我根本没办法将不理想的进度弥补上. 这些项目遇到了一些严重的问题.之前的工作我主要是在周末,有 ...

  6. Wix#可以直接写C#代码来生成Wix的MSI安装文

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Wix#可以直接写C#代码来生成Wix的MSI安装文.

  7. 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了

    系统关闭窗体的事件顺序为: OnCloseQuery ----> OnClose ----> OnDestroy 下面的代码说明问题: unit Unit3; interface uses ...

  8. Lombok : 让你写 Java代码像C#一样爽

    前言 我曾经是一名 .Net 开发,如今的我是一名 Java 开发者.在我享受着 Java 成熟的生态时,我常常怀念 c# 简洁的语法:自动属性.类型推断.自动初始化器 .... 鱼,我所欲也,熊掌亦 ...

  9. 不写一行代码,利用常用工具和软件批量下载URL资源

    有时候会遇到这种情况:想从某个网站下载一批东西,目标URL是比较规整的,而且结构都一样(仅某些字段不同).但又懒得开IDE专门写个脚本去弄,今天就和大家分享一下,如何利用手边常用的软件和工具,不用写一 ...

随机推荐

  1. TCP/IP体系结构-测试人员必须理解的

    如果还想在测试这条路上继续走下去的话,那么下面这些东西就是我们必须去掌握的,至少你还不想止步于简单的黑盒测试--其实,一直想去接触Linux下的应用测试,这样能学到东西会很多,而且会非常的受用.之前听 ...

  2. js常用函数大全107个

    1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...

  3. linux中的 tar命令的 -C 参数,以及其它一些参数(转)

    linux中的 tar命令的 -C 参数,以及其它一些参数 复制源:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.htmltar命令 ...

  4. android网络编程之HttpUrlConnection的讲解--POST请求

    1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...

  5. 第4章 流程控制----编写Java程序,使用while循环语句计算1+1/2!+1/3!+...+1/20!之和

    package four; public class fouronetwo { public static void main(String args[]){ double sum = 0,a = 1 ...

  6. PHP: 异常exception

    异常最常见于SDK调用中,函数执行失败时抛出异常,顺带错误码和错误信息. 先来看下PHP的异常处理相关函数: public Exception::__construct() ([ string $me ...

  7. oc知道经纬度求位置

    CLLocation *newLocation = [locations lastObject]; CLGeocodeCompletionHandler handler = ^(NSArray *pl ...

  8. shell 中的特殊符号的含义

    来源:http://blog.sina.com.cn/s/blog_62a151be0100x9rn.html 第四章 基本功 - 特殊符号 学习撰写 script 最迅速的捷径是观摩别人的 scri ...

  9. su -无反应

    一.问题产生环境 CentOS 6.3 X64SecureCRT 7.0.0 英文版 二.问题具体描述 今天操作自己的一台Linux服务器时,突然su命令不好使了,敲入命令回车后,没有任何反应,不管是 ...

  10. C#窗口实现最小化到系统托盘

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...