dapper mysql 分页_基于Dapper实现分页效果 支持筛选、排序、结果集总数等

简介

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

代码

方法定义

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

public Tuple, int> Find(LogSearchCriteria criteria

, int pageIndex

, int pageSize

, string[] asc

, string[] desc);

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

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

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

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

运行示例

1. 将Github的Repo下载或者Clone到本地以后,到Database目录下,解压缩Database.7z

2. Attach到Sql Server上。默认我使用Sql Server

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在C#中引用jQuery和jqGrid的库文件,然后在页面中添加一个jqGrid的表格。接着,你需要使用Dapper来查询数据库并将数据填充到jqGrid表格中。 以下是一个简单的示例: 1.在页面中添加一个jqGrid表格: ```html <table id="myGrid"></table> ``` 2.在C#代码中,使用Dapper查询数据并将结果填充到jqGrid表格中: ```csharp using System.Data.SqlClient; using Dapper; public class MyController : Controller { private string connectionString = "Data Source=MyServer;Initial Catalog=MyDatabase;User ID=MyUser;Password=MyPassword"; public ActionResult Index() { return View(); } public JsonResult GetData(string searchField, string searchString, string searchOper) { using (var connection = new SqlConnection(connectionString)) { var query = "SELECT * FROM MyTable WHERE " + searchField + " " + searchOper + " @searchString"; var data = connection.Query(query, new { searchString = searchString }); return Json(data, JsonRequestBehavior.AllowGet); } } } ``` 3.在页面中使用jQuery来初始化jqGrid表格,并添加表头条件搜索: ```javascript $(function () { $("#myGrid").jqGrid({ url: "/MyController/GetData", datatype: "json", mtype: "GET", colNames: ["ID", "Name", "Age"], colModel: [ { name: "ID", index: "ID", width: 50 }, { name: "Name", index: "Name", width: 100 }, { name: "Age", index: "Age", width: 50 } ], rowNum: 10, rowList: [10, 20, 30], pager: "#myGridPager", sortname: "ID", sortorder: "asc", viewrecords: true, height: "auto", caption: "My Grid", postData: { searchField: "", searchString: "", searchOper: "eq" }, onSearch: function () { var postData = $("#myGrid").jqGrid("getGridParam", "postData"); postData.searchField = $("#gs_myGrid").val(); postData.searchString = $("#myGrid").jqGrid("getGridParam", "searchString"); postData.searchOper = $("#myGrid").jqGrid("getGridParam", "searchOper"); } }); $("#myGrid").jqGrid("navGrid", "#myGridPager", { edit: false, add: false, del: false }); $("#myGrid").jqGrid("filterToolbar", { searchOnEnter: false }); }); ``` 在这个示例中,我们使用了jqGrid的filterToolbar来添加表头条件搜索,使用了onSearch事件来获取搜索条件并将其添加到postData中,然后在C#代码中使用searchField、searchString和searchOper参数来构造SQL查询语句。 注意:这只是一个简单的示例,实际的实现可能需要更多的逻辑来处理不同的搜索条件和数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值