#region 分页获取数据
/// <summary>
/// 分页获取数据
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="selectStr">获取列</param>
/// <param name="tableName">表名</param>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页数据量</param>
/// <param name="strWhere">查询条件</param>
/// <param name="key">关键字</param>
/// <param name="orderName">排序字段</param>
/// <param name="orderType">排序方式(非 0 值则降序)</param>
/// <param name="groupBy">分组字段</param>
/// <param name="RecordCount">输出查询的总数据量</param>
/// <returns></returns>
public List<T> GetUserAccess<T>(string selectStr, string tableName, int pageIndex, int pageSize, string strWhere, string key, string orderName, string orderType, string groupBy, ref int RecordCount)
{
var p = new DynamicParameters();
p.Add("@PageIndex", pageIndex);
p.Add("@PageSize", pageSize);
p.Add("@Order", orderName);
p.Add("@SelectStr", selectStr);
p.Add("@OrderType", orderType);
p.Add("@Groupby", groupBy);
p.Add("@key", key);
p.Add("@TableName", tableName);
p.Add("@WhereCondition", strWhere);
p.Add("@RecordCount", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@PageCount", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@error", "", dbType: DbType.String, direction: ParameterDirection.Output); List<T> ret = new List<T>();
using (var conn = DbFactory.GetDbConnection("MirrorMngr"))
{
ret = conn.Query<T>("Pro_CommonPager", p, commandType: CommandType.StoredProcedure).ToList();
//ret = GetCJFDData(ret);
RecordCount = p.Get<int>("RecordCount");
}
return ret;
}
#endregion

分页存储过程。

USE [MirrorMngr]
GO /****** Object: StoredProcedure [dbo].[Pro_CommonPager] Script Date: 09/16/2015 11:50:58 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author:        
-- Create date: <-->
-- Description:    <通用分页存储过程>
-- =============================================
CREATE PROCEDURE [dbo].[Pro_CommonPager]
(
@PageIndex int,--索引页
@PageSize int,--每页数量2
@TableName nvarchar(),--查询表名3
@Order nvarchar(),--排序的列4
@SelectStr nvarchar() = '*',--查询的列5
@WhereCondition Nvarchar(max)='',--查询条件6
@OrderType bit = , -- 设置排序类型, 非 值则降序
@Groupby NVarChar() = '' ,--分組
@RecordCount int=- output,--总行数
@PageCount int=- output,--总页数10
@error nvarchar()='' OUTPUT, --错误信息11
@key nvarchar()--关键字
--@retun nvarchar()='' output --错误信息11
)
AS
declare @strSQL nvarchar(max) -- 主语句
declare @strTmp nvarchar(max) -- 临时变量
declare @strOrder nvarchar(max) -- 排序类型
declare @groupByStr nvarchar()--分组变量
declare @whereStr nvarchar(Max)
declare @tableStr nvarchar(Max)
set @groupByStr=''
set @whereStr=''
set @tableStr='' if @OrderType !=
begin
set @strTmp = '<(select min'
set @strOrder = ' order by ' + @Order +' desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ' + @Order +' asc'
end
if @Groupby <>''
begin
set @groupByStr=' group by '+@Groupby+' '
end
if @WhereCondition <> ''
begin
set @whereStr=' where '+@WhereCondition+' '
end set @tableStr=' '+@TableName + ' ' + @groupByStr + ' ' + @strOrder + ' ' if @groupByStr <> ''
begin
set @tableStr=' select [' + @key + '] from (select top ' + str((@PageIndex-)*@PageSize) + ' '+@SelectStr+' from '+@TableName +' '+ @whereStr + ' ' + @groupByStr + ' ' + @strOrder + ') strTable'
end
else
begin
set @tableStr=' select top ' + str((@PageIndex-)*@PageSize) + ' [' + @key + '] from '+@TableName + ' '+@whereStr+' ' + @strOrder + ' '
end set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + ' where ' + @key + ' not in ('+@tableStr+ ')'
+ ' ' + @groupByStr + ' ' + @strOrder if @WhereCondition <> ''
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + ' where ' + @key + ' NOT IN ('+@tableStr + ') and (' + @WhereCondition + ') ' + @groupByStr + ' ' + @strOrder if @PageIndex =
begin
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + ' ' + @whereStr + ' ' + @groupByStr + ' ' + @strOrder
end
exec (@strSQL)
if(@@error<>)
begin
set @error='分页数据出错﹗';
return;
end
--SET @retun= @strSQL;
--print @strSQL
--创建一个临时表用于快速计算行数
--create table #tmp ( counts int );---创建临时表
--取得总记录数 IF @Groupby <> ''
begin
SET @strTmp = 'SELECT @RecordCount=Count(*) FROM (select '+@Groupby+' from ' + @TableName +' '+@whereStr+' '+@groupByStr+' ) groupTable'
end
else
begin
SET @strTmp = 'SELECT @RecordCount=Count(*) FROM '+ @TableName +' '+@whereStr+' '
end EXEC SP_EXECUTESQL @strTmp,N'@RecordCount int output',@RecordCount output if(@@error<>)
begin
set @error='分页数据出错﹗';
--drop table #tmp;
return;
end --select @RecordCount=counts from #tmp
--SET @RecordCount = @@RowCount
-- 获取总页数
-- "CEILING"函数:取得不小于某数的最小整数 SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize) if(@@error<>)
begin
set @error='分页数据出错﹗';
--drop table #tmp;
end
return GO

Dapper中使用存储分页。的更多相关文章

  1. etcd学习(9)-etcd中的存储实现

    etcd中的存储实现 前言 V3和V2版本的对比 MVCC treeIndex 原理 MVCC 更新 key MVCC 查询 key MVCC 删除 key 压缩 周期性压缩 版本号压缩 boltdb ...

  2. Android中数据存储(一)

    国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...

  3. 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK

    一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...

  4. 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

    MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎: 1.存储引擎其实就是如何实现存储数 ...

  5. SpringMVC结合easyUI中datagird实现分页

    SpringMVC结合easyUI中datagird实现分页 DataGrid以表格形式展示数据,并提供了丰富的选择.排序.分组和编辑数据的功能支持.轻量级,单元格合并.多列标题.冻结列和页脚只是其中 ...

  6. 第2/24周 页_SQL Server 中数据存储的基本单位

    上周通过探讨SQL Server如何执行一个查询奠定了基础.我也在那里提到页是8kb的缓存.今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节. 页是SQL Server的基础,在SQL ...

  7. float 在内存中如何存储的

    float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准:    一个浮点数有2部分组成:底数m和指数e 底数部分 使用二进制数来表示此浮点数的实际值指数部分 占用8bit的二进制数, ...

  8. <转载>浅谈C/C++的浮点数在内存中的存储方式

    C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中 ...

  9. union 中可以存储的是不带构造函数的类对象

    union 中可以存储的是不带构造函数的类对象 否则不符合逻辑 为什么不符合逻辑?

随机推荐

  1. H - Parity game-poj1733(需要离散化)

    题意:给一个序列这个序列都是由0和1组成,现在随意拿出来一个序列,然后说出他的和是奇数还是偶数,因为有可能存在假话,让你判断前多少条没有假话,也就是查找第一个假话的位置-1 ///////////// ...

  2. F - Prime Path

    题目大意: 素数路径 估计看数据就明白这道题什么意思了......给两个素数,都是四位数的素数,并且没有前导0,现在需要经过一种变换把一个素数转换成另一个,当然这种转换是有规则的,规则就是每次只能改变 ...

  3. [置顶] 【Git入门之十四】Git GUI

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374495 文章都快写完了,Git GUI才浮出水面,很多人要骂我,这么方 ...

  4. 对Spring的一些理解

    最近在复习一些关于框架的概念性问题,主要是为了最近的面试,怕被问到这些概念性的问题.不过在真正做开发的时候还是要好好理解这些框架的基本原理,以及它们的工作流程.这样,我们才能更好的使用这些框架.下面就 ...

  5. 安装Wamp后 Apache无法启动的解决方法

    安装Wamp后 Apache无法启动的解决方法,网上的解决方案可以说是五花八门,有些说了一大推,一点作用都起不到. 其实解决方法只需两步: 1.安装路径不能包含有中文,这个我不知道为什么,总之如果安装 ...

  6. 【转】 Android Studio SVN 使用方法

    Android Studio SVN 使用方法 如何安装配置SVN 请直接参考<SVN在Android Studio中的配置> http://www.cnblogs.com/songmen ...

  7. Nginx优化具体,应对高并发

     nginx指令中的优化(配置文件) worker_processes 8; nginx进程数,建议依照cpu数目来指定.一般为它的倍数. worker_cpu_affinity 00000001 ...

  8. 使用EPEL和REMI第三方yum源

    http://dl.fedoraproject.org/pub/epel/ epel-release-latest-.noarch.rpm redhat5 epel-release-latest-.n ...

  9. mac缺少预编译.a问题

    在win7的svn提交了coco2d-x 3.0代码,在mac进行更新,用xcode打开工程,编译不成功,一看好多的.a文件全部都是红色的,无法找到文件,一开始不了解coco2d-x的prebuilt ...

  10. UNDERSTANDING VOLATILE VIA EXAMPLE--reference

    We have spent last couple of months stabilizing the lock detection functionality in Plumbr. During t ...