java 之 ibatis 分页


分页要那些条件?
总页数,当前页,还有每页的信息数:pageSize
有了这三个,分页就ok了

在ibatis 里面 应该怎么操作呢 ?下面是ibatis的xml配置文件:

<?xml version="1.0" encoding="UTF-8" ?>


 
 
   
................
   
 

上面的是对应数据库里面的一个表的配置,HOURLY_DEAL是对应的表名
resultMap id="hourlyDealDOResult"是表对应的类在 xml 里面的id号
column="ID" property="id" ---这个自己看了呵呵


找到xml文件里面的 对应 分页语句:
<select id="queryHourDeal" resultMap="hourlyDealDOResult" parameterClass="java.util.HashMap">
        PAGINATION.paginationStart" />
            SELECT ID,
           。。。。
            FROM WS_DEAL
            order by id asc
        PAGINATION.paginationEnd" />
    >

---这里的select 是根据sql语句来定的,同样也有update,delete 等相应的操作
这里两个红色的参数是需要传进来的翻页的开始页和结束的页。以前也写过翻页,还需要总页数!这个已经在该语句里面实现了:

select * form. (
   select * from table
) where starRow < paginationStart and endRow > paginationEnd

就是说实现ibatis的分页,只需要传进来两个参数:

public List queryHourDeal(int page, int pageSize) {
        int startRow = 1;
        int endRow = pageSize;
        if (page != 1) {
            startRow = (page - 1) * pageSize + 1;
            endRow = startRow + pageSize - 1;
        }

        return hourlyDealDao.queryHourDeal(startRow, endRow);
    }

蓝色部分就是对应的调用 dao里面的 ibatis 函数:

public List queryHourDeal(int startRow, int endRow) {
        Map paramap = new HashMap();
        paramap.put("startRow", startRow);
        paramap.put("endRow", endRow);
        return getSqlMapClientTemplate().queryForList("HOURLY_DEAL.queryHourDeal", paramap);
    }


注意:上面的蓝色的 startRow, endRow 的格式必须是这样规定的,要不ibatis不会识别出来!!!!----这是ibatis 底层已经写好的


最后生产上一页和下一页的url ,信息全部封装在一个
PageNavigationDto对象里面:


private PageNavigationDto getPageInfo(int page, int pageSize,PageNavigationDto pageNavigationDto) {
        pageNavigationDto.setPageInfo(page, pageSize);
        int totalCount = hourDealService.getTotalCount();
        pageNavigationDto.setTotalCount(totalCount);
       
        int more = totalCount%pageSize;
        int endPage = 0;
        if(more == 0){
            endPage = totalCount/pageSize;
            pageNavigationDto.setEndPage(endPage);
        }else{
            endPage = totalCount/pageSize + 1;
            pageNavigationDto.setEndPage(endPage);
        }
        pageNavigationDto.setCurrentPage(page);
        if(page!=1){
            if(endPage!=page){
                pageNavigationDto.setLastPage(page-1);
                pageNavigationDto.setNextPage(page+1);
            }
            else{
                pageNavigationDto.setLastPage(page-1);
                pageNavigationDto.setNextPage(page);
            }
        }else{
            if(endPage!=page){
                pageNavigationDto.setLastPage(page);
                pageNavigationDto.setNextPage(page+1);
            }
            else{
                pageNavigationDto.setLastPage(page);
                pageNavigationDto.setNextPage(page);
            }
        }
        pageNavigationDto.setLastUrl("/hourlydeal/relation.htm?page="+ pageNavigationDto.getLastPage());
        pageNavigationDto.setNextUrl("/hourlydeal/relation.htm?page="+ pageNavigationDto.getNextPage());
        return pageNavigationDto;
    }



---------------over

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11134734/viewspace-659495/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11134734/viewspace-659495/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值