分页查询
最后更新: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到第9行
【ORM】
线程共享变量
一般是写个静态工具类把分页参数放在ThreadLocal里PageUtil.startPage()
在构造SQL时拼接这个变量,但是极不推荐这种方式,如果线程共享有可能出问题。
在构造SQL时拼接这个变量,但是极不推荐这种方式,如果线程共享有可能出问题。