分页

HiSql 底层已经封装了对于单表,多表的分页逻辑 Take 方法表示每一页显示的数量,Skip 表示查询第几页,Skip(1) 表示查询第一页,请查看以下样例

单表分页查询

  1. Skip 表示取的页码数
  2. Take 表示每页获取数量
  3. Sort 可以支持多种方式如
    1. Sort("createtime desc") 注意这个适用于Hisql支持的所有库(不要用底层库的语法不然Hisql检测时会抛出异常)
    2. Sort("createtime desc","TabName asc") 多个排序条件时可以这样写
    3. Sort(new SortBy { { "createtime",SortType.DESC} }) 也支持这种写法
    4. 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
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

多表关联分页查询

提示

多表关联使用分页一定要指定排序条件

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