使用kotlin 分页的另一种代码实现
程序员文章站
2022-03-08 20:49:39
...
最近由于工作开发用到了kotlin,其中分页的实现由于数据的实现不是非常理想,于是本人就写了一个自
己的分页代码实现
res.dataArray = JsonArray() // 手动分页 var totalDataNum = resDataArray.size() var page = JsonObject() var totalPageSize = 0 if((totalDataNum %10) >0) totalPageSize = (totalDataNum/10 + 1) else totalPageSize = (totalDataNum/10) // 每页大小 page.put("size",10) // 总页数 page.put("totalPage",totalPageSize) // 总数 page.put("totalCount",totalDataNum) // 当前页 page.put("currentPage",currentPage) // 返回当前页数据封装 if(resDataArray.size()>10){ // 多页 var i = (currentPage-1)*10 while(true){ if( currentPage*10 >i){ println("i == " + i) if(i<totalDataNum){ println("resDataArray.getValue(i ) = " + resDataArray.getValue(i ) ) resDataArr.add(resDataArray.getValue(i )) i++ }else{ break } }else{ break } } println("resDataArr======" + resDataArr) res.dataArray = resDataArr }else{ // 一页 println("resDataArr======" + resDataArray) res.dataArray = resDataArray }
如果自己设计分页,其中需要考虑几个参数
总数目:这里可以通过返回数据.size 获取
每页条数:这里一般是由前端传递过来 (这里我后台写死了10,如果需要的话,把10换成一个参数即可 )
总页数: 总数目 % 每页条数 > 0 = ( 总数目 % 每页条数) : ( 总数目 % 每页条数 + 1)
当前页: 一般是从前端传递过来 (我这里设计的时候,直接从list 集合取,通过list .get(当前页的数据范
围) 的形式 获取)
总结:其实分页一般是通过数据分页
注意点:分页最好写上排序,不然分页查询的数据有可能每次会不一样
mysql :limit 和 offset 关键字
如(我们查询如下的视图 v_course_count_teacher)
-- mysql 分页原理 SELECT * FROM `v_course_count_teacher` ORDER BY teacher LIMIT 2 ; -- (默认从0开始) SELECT * FROM `v_course_count_teacher` ORDER BY teacher LIMIT 1 ,2 ; -- 第几个开始(默认从0开始) SELECT * FROM `v_course_count_teacher` ORDER BY teacher LIMIT 3 OFFSET 3 ;-- 条数 从第几个开始
oracle:rownum 关键字 (rownum < 数据范围 + 临时表)