分页查询

最后更新:2023-09-29 10:01:28 | 状态:未完成
  • anyline
  • anyline
  • ORM
  • 全部展开
【anyline】
web环境
大多数情况下分页一般是分页参数来自于web请求,所以AnylineController中集成了封装分页参数以及其他查询参数的方法condition()
//true表示需要分页
DataSet set = service.querys("HR_EMPLOYEE", conditoin(true, "其他查询参数"));
//10表示固定每页10行
DataSet set = service.querys("HR_EMPLOYEE", conditoin(10, "其他查询参数"));

在通过分页查询返回的DataSet中会包含一个PageNavi对象(合计多少行、当前第几页等属性)
DataSet提供了total()用来统计合计多少行(与DataSet.getNavi().getTotalRow()作用一致)。
同时提供了size()用来统计当前DataSet中有多少行数据
如数据库中共95行数据,每页10行,当前第10页
total() 返回 95
size() 返回 5
除了默认的参数外,分页的配置比较多,可以参考【分页查询及参数

【anyline】
后台构造分页参数
如果不是web环境那需要手工构造分页参数,这就需要多费几行代码了。
//每页3行,当前第2页(下标从1开始),这里的每页多少行就不受配置文件限制了想写多少写多少
PageNavi navi = new DefaultPageNavi(2, 3);
service.querys("HE_EMPLOYEE", navi, "其他查询条件")
//如果有ConfigStore也可以
ConfigStore configs = new DefaultConfigStore()
confgs.setNavi(navi);
service.querys("HE_EMPLOYEE", configs, "其他查询条件")
//如果自己计算好了起止下标也可以这样
service.querys("HR_EMPLOYEE", 0, 9, "其他查询条件")//注意这里的下标从0开始

//也可以没有PageNavi直接利用ConfigStore方法
configs.page(3,10);//第3页 第页10行
configs.limit(10);//返回前10行
configs.limit(100, 10);//从100行开始返回10行,100:指定第一个返回记录行的偏移量(即从哪一行开始返回) 初始行的偏移量为0
configs.scope(0,9); //从第0到第0行

【ORM】
线程共享变量
一般是写个静态工具类把分页参数放在ThreadLocal里PageUtil.startPage()
在构造SQL时拼接这个变量,但是极不推荐这种方式,如果线程共享有可能出问题。
最近更新 搜索 提交