一. 要分頁我們必須要有數據庫,所以我們先準備下數據庫,其數據庫腳步如下:
–以下是創建數據庫和數據庫表以及向數據庫插入數據 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;
// 每頁顯示多少條&