如何利用短小精悍的实现分页效果

  介绍

如何利用短小精悍的实现分页效果?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

<强>简介

之前事先搜索了下博客园上关于短小精悍的分页的实现,有是有,但要么是基于存储过程,要么支持分页,而不支持排序,或者搜索条件不是那么容易维护。

<强>方法定义

以下是我的一个分页的实现,虽然不是泛型(因为考虑到那里的条件以及sql语句的搭配),但是应该可以算是比较通用的了,方法定义如下:

公共Tuple找到(LogSearchCriteria标准
  ,int pageIndex
  ,int页大小
  ,string [] asc
  ,string [] desc); 

以上函数定义是一个查询日志的示例,返回结果中,元组的第一个值是结果集,第二个值是总行数(例如,总共有100条记录,每条10页,当前第一页,那么第一个值是10条记录,第二个值是100)

在示例项目中,我用两种方法实现了分页:

1。第一种是基于2此查询,第一次得到总数,第二次查询得到结果集。

2。1第二种是基于此查询,用了的状态"置疑"的/取回,所以只支持Sql Server 2012 +,所以大家根据自己用的Sql Server版本选择不同的实现,这里当然是第二种实现效率更高一点。

运行示例

1。将Github的回购下载或者克隆到本地以后,到数据库目录下,解压缩Database.7z

2。连接到Sql Server上。默认我使用Sql Server LocalDB,连接字符串是数据源=(LocalDB) \ MSSQLLocalDB;初始目录=DapperPagingSample;综合安全=True;,如果你用的不是LocalDB,请酌情修改App.Config的连接字符串。

3。Ctrl + F5运行程序,示例项目里,我用了一个简单的WinForm程序,但应该可以比较好的演示分页效果。

如何利用短小精悍的实现分页效果

<强>多表支持

增加了示例,支持多表查询,例如有两个日志表,表,日志的LevelId字段引用水平的Id字段,通过以下的查询,可以实现多表查询的分页,排的序,过滤:

首先是通过两次查询的示例(基本支持所有版本Sql Server):

公共Tuple找到(LogSearchCriteria标准
  ,int pageIndex
  ,int页大小
  ,string [] asc
  ,string [] desc)
  {
  使用(IDbConnection连接=base.OpenConnection ())
  {
  常量字符串countQuery=@"选择数(1)
  从日志l
  内连接(水平)lv>公共Tuple int>FindWithOffsetFetch (LogSearchCriteria标准
  ,int pageIndex
  ,int页大小
  ,string [] asc
  ,string [] desc)
  {
  使用(IDbConnection连接=base.OpenConnection ())
  {
  
  常量字符串selectQuery=@";与_data (
  选择l。*,lv。名称(水平)
  从日志l
  内连接(水平)lv>感谢各位的阅读!看完上述内容,你们对如何利用短小精悍的实现分页效果大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。

如何利用短小精悍的实现分页效果