对于分页功能随处可见,其功能的实现思路对于开发人员也十分熟悉,但是对于用不同的数据库来开发,其SQL查询语句有所不同,下面我主要说的是SQL Server 在Java中是怎样实现分页的,分页思路都是一样的,有所不同的是数据库SQL查询语句怎样写,以下是实现分页的步骤:
- 创建SQL分页查询语句:
第一条SQL语句是SQL Server的分页查询语句,首先查具体的表,如何在进行查对应的字段,然后再进行查询行号,也就是ROW_NUMBER()OVER(ORDER BY 字段名),由于这个行号是个伪列,所以要再嵌套一层查询语句,才能查询具体的行号,再通过该行号列进行Where查询,其中有两个占位符,第一个是开始的索引,第二个是具体的要查询的条数。
第二条SQL语句是查询总条数的SQL语句。
- 在Java的Dao层创建对应的查询方法,传递相关分页的参数,其中分页必要查询的参数是必不可少的,一个为开始的索引startIndex,另一个是要查询数据的条数pageSize。下一步连接数据库,进行预编译SQL语句,设置对应的参数值,再执行SQL查询语句,然后调用遍历数据的方法,该方法是封装好的方法,这里就不列出代码了,其中返回list集合对象,该集合就是查询数据库分页的数据。然后再写一个方法来进行查询数据总条数:
- 在Servlet中调用Dao层的方法之前,首页要接收页面传递过来的参数,一个是当前页curPage,另外一个是页面大小pageSize,通过该两个参数获取的开始的索引,然后再执行Dao层的两个方法,获取到相应的数据。调用Bsgrid的方法getJson(),传递相应的参数,然后返回JSONObject对象,返回到客户端,当然在页面用不同的分页插件,接收和返回的参数有所不同,要考虑插件对应的参数来设置,其中这里用的是Bsgrid的插件,以下是实现的代码:
- 下面是封装好的返回客户端分页插件的参数,这里的四个参数都是按页面分页插件对应的返回参数来设置的,对于不同的分页插件,返回参数有所不同: