当前位置:编程学习 > JAVA >>

Java通用分页

一. 要分页我们必须要有数据库,所以我们先准备下数据库,其数据库脚步如下:


--以下是创建数据库和数据库表以及向数据库插入数据   use master 
Go 
if exists(select * from sysdatabases where name=pagination) 
drop database pagination 
Go 
create database pagination 
Go 
use pagination 
Go 
create table userInfo ( 
    [userID] int identity(1,1) primary key not null, 
    [userName] nvarchar(50) not null, 
    [userPassword] nvarchar(50) not null, 

Go 
insert userInfo  values(xuyesheng,8888) 
insert userInfo  values(jiaojiao,8888) 
insert userInfo  values(administrator,888) 
insert userInfo  values(xuyesheng1,123) 
insert userInfo  values(xuyesheng2,123) 
insert userInfo  values(xuyesheng3,123) 
insert userInfo  values(xuyesheng4,123) 
insert userInfo  values(xuyesheng5,123) 
insert userInfo  values(xuyesheng6,123) 
Go 
select * from userInfo
二: 通用分页的存储过程,如下:

    ---------------创建存储过程-------------- 
    Go 
    set ANSI_NULLS ON 
    set QUOTED_IDENTIFIER ON 
    go 
    ------------------------------------ 
    -- 
    --用途:用于需要分页显示的数据 
    --时间:2009年08月22日 
    --描述:通用的存储过程分页程序 
    -- 
    ------------------------------------- 
    create PROCEDURE [dbo].[GetData] 
    @tblName varchar(255), -- 表名 
    @fldName varchar(255), -- 字段名 
    @OrderfldName varchar(255), -- 排序字段名 
    @PageSize int = 10, -- 页尺寸 
    @PageIndex int = 1, -- 页码 
    @IsCount bit = 0, -- 返回记录总数, 非 0 值则返回 
    @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 
    @strWhere varchar(1000) = -- 查询条件 (注意: 不要加 where) 
    AS 
    declare @strSQL varchar(6000) -- 主语句 
    declare @strTmp varchar(500) -- 临时变量 
    declare @strOrder varchar(400) -- 排序类型 
    if @OrderType != 0 
    begin 
      set @strTmp = <(select min 
      set @strOrder = order by [ + @OrderfldName +] desc 
    end 
    else 
    begin 
      set @strTmp = >(select max 
      set @strOrder = order by [ + @OrderfldName +] asc 
    end 
      set @strSQL = select top + str(@PageSize) + + @fldName + from [ 
      + @tblName + ] where [ + @OrderfldName + ] + @strTmp + ([ 
      + @OrderfldName + ]) from (select top + str((@PageIndex-1)*@PageSize) + [ 
      + @OrderfldName + ] from [ + @tblName + ] + @strOrder + ) as tblTmp) 
      + @strOrder 
      if @strWhere !=  
      set @strSQL = select top + str(@PageSize) + + @fldName + from [ 
      + @tblName + ] where [ + @OrderfldName + ] + @strTmp + ([ 
      + @OrderfldName + ]) from (select top + str((@PageIndex-1)*@PageSize) + [ 
      + @OrderfldName + ] from [ + @tblName + ] where + @strWhere +  
      + @strOrder + ) as tblTmp) and + @strWhere + + @strOrder 
      if @PageIndex = 1 
      begin 
       set @strTmp =  
       if @strWhere !=  
          set @strTmp = where + @strWhere 
          set @strSQL = select top + str(@PageSize) + + @fldName + from [ 
          + @tblName + ] + @strTmp + + @strOrder 
      end 
      if @IsCount != 0 
      begin 
           if @strWhere !=  
            set @strSQL = select count( + @OrderfldName + ) as Total from [ + @tblName + ]+ where + @strWhere   
            else 
            set @strSQL = select count( + @OrderfldName + ) as Total from [ + @tblName + ]     
      end 
    exec (@strSQL) 
    --测试下 
    Go 
    ----参数说明exec [GetData] 表明,查找的列名* 表示查找所有信息,主键,页大小,第几页,非 
    --表示返回记录数,[排序类型,非则降序排列],条件 
    --得到分页的数据 
    exec [GetData] userInfo,*,userID,5,1,0,0,null 
    --得到总共的条数 
    exec [GetData] userInfo,*,userID,5,1,1,0,null 
    --根据条件查询 
    exec [GetData] userInfo,*,userID,5,1,0,0, userID like %2%

存储过程我们有了我们只要给一下几个参数就OK了

@tblName varchar  -- 表名
@fldName varchar  -- 字段名
@OrderfldName     -- 排序字段名
@PageSize int     -- 页尺寸
@PageIndex int    -- 页码
@IsCount bit      -- 返回记录总数, 非 0 值则返回
@OrderType bit    -- 设置排序类型, 非 0 值则降序
@strWhere varchar -- 查询条件 (注意: 不要加 where)


三 通用包

到这里我们先不用急,先将一下三个Java类(Pagination.java Call.java AutoSetData.java)封装一下,然后打成JAR包,以后我们直接导入JAR包即可

Pagination.java

存储过程我们有了我们只要给一下几个参数就OK了

@tblName varchar  -- 表名
@fldName varchar  -- 字段名
@OrderfldName     -- 排序字段名
@PageSize int     -- 页尺寸
@PageIndex int    -- 页码
@IsCount bit      -- 返回记录总数, 非 0 值则返回
@OrderType bit    -- 设置排序类型, 非 0 值则降序
@strWhere varchar -- 查询条件 (注意: 不要加 where)

到这里我们先不用急,先将一下三个Java类(Pagination.java Call.java AutoSetData.java)封装一下,然后打成JAR包,以后我们直接导入JAR包即可

Pagination.java

import java.util.List;  
public class Pagination {  
    // 总共的数据量  
    private int totle;  
    // 每页显示多少条&

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,