分页
HiSql
底层已经封装了对于单表,多表的分页逻辑 Take
方法表示每一页显示的数量,Skip
表示查询第几页,Skip(1)
表示查询第一页,请查看以下样例
单表分页查询
Skip
表示取的页码数Take
表示每页获取数量Sort
可以支持多种方式如Sort("createtime desc")
注意这个适用于Hisql支持的所有库(不要用底层库的语法不然Hisql检测时会抛出异常)Sort("createtime desc","TabName asc")
多个排序条件时可以这样写Sort(new SortBy { { "createtime",SortType.DESC} })
也支持这种写法Sort(new SortBy { { "createtime",SortType.DESC} , { "TabName", SortType.ASC } })
多个参数写法
//方式1
DataTable dt1= sqlClient.Query("Hi_TabModel").Field("*")
.Sort("createtime desc"). Skip(1).Take(100).ToTable();
//方式2
DataTable dt2 = sqlClient.Query("Hi_TabModel").Field("*")
.Sort(new SortBy { { "createtime",SortType.DESC} }).Skip(1).Take(100).ToTable();
//如果需要返回当前查询条件的记录总数
int _total=0;
DataTable dt3 = sqlClient.Query("Hi_TabModel").Field("*")
.Sort(new SortBy { { "createtime",SortType.DESC} }).Skip(1).Take(100).ToTable(ref _total);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DataTable dt4= sqlClient.HiSql("select * from Hi_TabModel").Skip(1).Take(100).ToTable();
//如果需要返回当前查询条件的记录总数
int _total=0;
DataTable dt5 = sqlClient.HiSql("select * from Hi_TabModel").Skip(1).Take(100).ToTable(ref _total);
1
2
3
4
5
6
2
3
4
5
6
多表关联分页查询
提示
多表关联使用分页一定要指定排序条件
var _sql = sqlClient.HiSql("select a.TabName, a.FieldName from Hi_FieldModel as a inner join Hi_TabModel as b on a.TabName=b.TabName where a.TabName=b.TabName order by a.SortNum asc ").Take(20).Skip(2).ToSql();
1
分类汇总分页查询
如果在业务中要对分类汇总数据进行分页也是可以的如下所示
DataTable dt= sqlClient.HiSql("select TabName,FieldType,count(FieldName) as fcount from Hi_FieldModel group by TabName,FieldType order by TabName ").Skip(2).Take(5).ToTable();
1