SQL 分页实现

SQL通用分页实现

SQL 分页实现

--通用分页

ALTER PROCEDURE [dbo].[Sys_Pagination_1]

@tblName VARCHAR(2000) , -- 表名

@strGetFields VARCHAR(1000) = '*' , -- 需要返回的列

@fldName VARCHAR(255) = '' , -- 排序的字段名

@PageSize INT = 10 , -- 页尺寸

@PageIndex INT = 1 , -- 页码

@OrderType BIT = 0 , -- 设置排序类型, 非 0 值则降序

@strWhere VARCHAR(2500) = '' -- 查询条件 (注意: 不要加 where)

AS

BEGIN

--处理开始点和结束点

DECLARE @strOrder VARCHAR(400) -- 排序类型

DECLARE @MaxCode NVARCHAR(100) --记录个数

DECLARE @StartRecord INT;

DECLARE @EndRecord INT;

DECLARE @TotalCountSql NVARCHAR(4000);

DECLARE @SqlString NVARCHAR(4000);

SET @StartRecord = ( @PageIndex - 1 ) * @PageSize + 1

SET @EndRecord = @StartRecord + @PageSize - 1

IF @OrderType != 0

BEGIN

SET @strOrder = ' order by ' + @fldName + ' desc'

--如果@OrderType不是0,就执行降序,这句很重要!

END

ELSE

BEGIN

SET @strOrder = ' order by ' + @fldName + ' asc'

END

SET @TotalCountSql = N'select @Max_ID = count(*) from ' + @tblName;--总记录数语句

SET @SqlString = N'(select row_number() over (' + @strOrder

+ ') as rowId,' + @strGetFields + ' from ' + @tblName;--查询语句

IF ( @strWhere ! = ''

OR @strWhere != NULL

)

BEGIN

SET @TotalCountSql = @TotalCountSql + ' where ' + @strWhere;

SET @SqlString = @SqlString + ' where ' + @strWhere;

END

--第一次执行得到

--IF(@TotalRecord is null)

-- BEGIN

EXEC sp_executesql @totalCountSql, N'@Max_ID varchar(100) output',

@MaxCode OUTPUT;--返回总记录数

PRINT @totalCountSql

-- END

----执行主语句

SET @SqlString = 'select ' + @strGetFields + ' from ' + @SqlString

+ ') as t where rowId between ' + LTRIM(STR(@StartRecord))

+ ' and ' + LTRIM(STR(@EndRecord));

EXEC(@SqlString)

PRINT @SqlString

RETURN @MaxCode

END

posted @ 2016-12-21 09:27 画个逗号给明天 阅读( ...) 评论( ...) 编辑 收藏
MybatisPlus是一款优秀的Java ORM框架,其提供了丰富的功能和易用性。在使用MybatisPlus进行数据分页时,我们可以通过自定义SQL实现分页。 以下是MybatisPlus自定义SQL分页实现步骤: 1. 在Mapper.xml中编写自定义的分页SQL语句。其中需要用到limit关键字来限制查询结果的数量,以及offset关键字来指定查询结果的起始位置。 例如: ``` <select id="selectUserByPage" resultMap="userResultMap"> select * from user limit #{offset}, #{size} </select> ``` 其中,#{offset}和#{size}是MybatisPlus提供的分页参数,分别表示查询结果的起始位置和每页查询的记录数量。 2. 在Java代码中调用Mapper接口中的方法,使用MybatisPlus提供的Page对象来进行分页查询。 例如: ``` Page<User> page = new Page<>(pageNum, pageSize); mapper.selectUserByPage(page); List<User> userList = page.getRecords(); ``` 其中,Page类是MybatisPlus提供的分页对象,可以通过传入当前页数和每页记录数来创建。在调用自定义的分页SQL时,将Page对象作为参数传入,MybatisPlus会自动解析其中的分页参数,并将分页结果设置到Page对象中。 3. 最后,我们可以通过Page对象获取分页结果,并对其进行进一步的操作。 例如: ``` for (User user : userList) { System.out.println(user.getName()); } System.out.println("总记录数:" + page.getTotal()); ``` 其中,getRecords()方法可以获取当前页的记录列表,getTotal()方法可以获取查询结果的总记录数。 以上就是MybatisPlus自定义SQL分页实现步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值