当前位置:首页 » Mysql技术教程

使用kotlin 分页的另一种代码实现

2017-12-28 16:21 本站整理 浏览(15)

 

      最近由于工作开发用到了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 < 数据范围  +  临时表)