#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. VC++ 动态检测串口的热插拔(一)通过注册表实现

    在上一篇文章中讲述了如何通过循环遍历的方法获取可用串口,可是这样的方法过于暴力,难免会想有没有其他的办法那,嘿嘿,那是肯定会有的,不管什么问题,解决问题的方法永远都不止一种.下面讲述如何通过注册表来获 ...

  2. tomcat中debug启动和start启动的区别

    debug启动tomcat:修改代码不加方法,不加参数,只是单纯的修改方法,不用重启tomcat(热部署). start启动tamcat:修改代码需要重启tomcat.

  3. 深入了解JavaScript中的for循环

    在ECMAScript5中,有三种for循环,分别是: 简单for循环 for-in forEach 在ES6中,新增了一种循环 for-of 简单for循环 const arr = [1, 2, 3 ...

  4. Django之牛刀初试

    一.Django安装 1.使用pip安装django pip3 inistall django 2.将django-admin加入到环境变量中 # 如果是windows的系统需要操作这一步,linux ...

  5. string和stringbuffer stringbuilder的快速理解。

    这三个对象都可操作字符串,区别string定义的变量除非重新赋值,否则是不可改变的.调用string的方法不会改变,但是其他两个有对象的方法可改变,比如apend的方法,后两个区别一个是线程安全不安全 ...

  6. java 服务端解决ajax跨域问题

    //过滤器方式 可以更改为拦截器方式public class SimpleCORSFilter implements Filter { public void doFilter(ServletRequ ...

  7. [Angular 2] ng-class and Encapsulated Component Styles

    import {Input, Component, View, NgClass} from "angular2/angular2"; @Component({ selector: ...

  8. SAP OTR 字段维护 更改SAP的字段翻译

    维护系统文本字段:SOTR_EDIT           TC:SE63 在SAP用户选择屏幕中,用鼠标选定一个栏位后按F1键,能够看到SAP对其详细解释,通常这样的解释文本分为两部分,一部分为标题, ...

  9. linux 一些笔记内容

    #which COMMAND : 显示命令路径#whatis COMMAND : 命令出现在哪个章节#type COMMAND :显示一个命令是内部命令还是外部命令#printenv :显示系统信息 ...

  10. 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之三

    /** ****************************************************************************** * @author    暴走的小 ...