最近在使用java,请问如何对java调用存储过程返回的结果集进行分页?数据量比较大,有6W多条记录,望各位给些意见?不胜感谢!

解决方案 »

  1.   

    这个在数据库端比较好,你现在得结果集是全部的6w数据,不太好处理,不如修改下存储过程,多增加几个参数。增加个第几页,每页显示数目。
    这样直接在存储过程中通过limit(mysql),或者是top直接获取就可以了!
      

  2.   

    CREATE PROCEDURE pageTest  --用于翻页的测试
    --需要把排序字段放在第一列 (
      @FirstID nvarchar(20)=null,  --当前页面里的第一条记录的排序字段的值
      @LastID nvarchar(20)=null,  --当前页面里的最后一条记录的排序字段的值
      @isNext bit=null,    --true 1 :下一页;false 0:上一页
      @allCount int output,   --返回总记录数
      @pageSize int output,   --返回一页的记录数
      @CurPage int     --页号(第几页)0:第一页;-1最后一页。
      )ASif @CurPage=0
     begin
      --统计总记录数
      select @allCount=count(ProductId) from Product_test 
       
      set @pageSize=10
      --返回第一页的数据
      select top 10 
       ProductId,
       ProductName,
       Introduction   
       from Product_test order by ProductId 
     endelse if @CurPage=-1 select * from 
      (select top 10 ProductId,
       ProductName,
       Introduction  from Product_test order by ProductId desc ) as aa  
      order by ProductId
    else begin 
      if @isNext=1
       --翻到下一页
       select top 10 ProductId,
       ProductName,
       Introduction
      from Product_test where ProductId > @LastID order by ProductId 
       
       
      else
       --翻到上一页
       select * from
        (select top 10 ProductId,
       ProductName,
       Introduction
      from Product_test where ProductId < @FirstID  order by ProductId desc) as bb order by ProductId
     end
      

  3.   

    推荐在存储过程中做,如果在java中做,你还是要查出来6W条数据才能分页,还是会很慢啊
      

  4.   

    在存储过程中使用分页语句实现,postgres的offset与limit,ms-sql的top,依数据库而定.
    只需增加访问的页数一个参数便可以实现.