`
yangjueshe
  • 浏览: 5886 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

sql分页 springmvc和displaytag实现

    博客分类:
  • Java
阅读更多

分页原理

两部分组成

  1. 分页导航信息
  2. 每个页面的数据查询语句信息

实现这个功能,需要查询的信息:

 

    1. 总记录数:resultSize
    2. 每页显示的记录数:pageSize
    3. 当前的页码:pageIndex
    4. 总页数(需要显示的时候),这是个分页内部的一个属性,有resultSize -1 / pageSize+1得到

 

  不管是哪种实现,上述信息具备即可。
  下面使用displaytag 标签,DisplayTag是一个非常好用的表格显示标签,适合MVC模式,其主页在http://displaytag.sourceforge.net

 

 

     sql的分页 pageIndex = ( pageIndex -1 ) * pageSize

    1. mysql 使用limit 

 

  select * from users limit pageIndex, pageSize

   

    2. oracle 使用 rownum

   

select * from (
	  select a.*, rownum num from (
		select * from users order by name desc) a
	  where rownum <= (pageSize + pageIndex) ) 
      where num >= pageIndex

 

    界面实现

    1. 显示页码 jsp

    

<%@ taglib prefix="display" uri="http://displaytag.sf.net/el" %>
	
   <display:table name="userList"  pagesize="10" requestURI="user.do"  sort ="external" 

id ="row" partialList ="true"  size ="resultSize">
		<display:column property ="userid"  title ="编号"/>
		<display:column property ="username"  title ="用户名"/>
		<display:column property ="email"  autolink="true" title ="邮箱"/>
		<display:column title="操作">
			<a href="user.do?action=delete&id=<c:out value="${row.userid}"/>">删除</a>
		</display:column>
   </display:table>

 

   说明
   table中属性
   name="userList" 将记录集存在session或者request中的键值
   pagesize="10"   每页显示10条数据
   sort="external"  外部排序
   id="row"   表格id值,用于程序得相关的参数
   partialList="true"  分段从数据库中读数据
  
   column中属性
   autolink="true" 自动生成链接 email或者url
   其他一些属性可以参考自带的例子 

 

   2. controller (user.do) springmvc

  

Map model = new HashMap();
        //页数的参数名
        String pageIndexName = new ParamEncoder("row")
                .encodeParameterName

(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);
        // 每页显示的条数 
        int pageSize = 10;
        // 当前页
        int pageIndex = LotteryUtil.isEmpty(request.getParameter(pageIndexName)) ? 0 : 

(Integer
                .parseInt(request.getParameter(pageIndexName)) - 1);
        //总记录
        int resultSize = userService.getAllUserCount();
        //显示所有
        List<User> userList = userService.getUsers(pageIndex, pageSize);

        model.put("resultSize", resultSize);
        model.put("userList", userList);
        return new ModelAndView("userList", model);

  

    上面是使用springmvc实现的,其他的实现类似

分享到:
评论
2 楼 hcjhuanghe 2010-06-04  
对于大数据分页有何坏处,可否解释一下,多谢、
1 楼 yangjueshe 2010-04-04  
自己占楼
displaytag对于小数据的分页还是很不错的!

相关推荐

Global site tag (gtag.js) - Google Analytics