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 ,