Mybatis分页插件 - PageHelper

GIT项目地址:http://git.oschina.net/free/Mybatis_PageHelper

@RequestMapping("list.html")  
public String list(Model model, HttpServletRequest request) {  
    String sqlId = "menu.mysql.selectMenu";  
/       list = MybatisUtils.selectList(sqlId, SpringUtils.getParameter(request));  
    Page<Object> list = (Page<Object>) MybatisUtils.selectListByPage(sqlId, SpringUtils.getParameter(request));  
/       model.addAttribute("list", new PageInfo(list));  
    model.addAttribute("pageNum", list.getPageNum());  
    model.addAttribute("pages", list.getPages());  
    model.addAttribute("list", list);  
    return "menu/list";  
} 
@SuppressWarnings("unchecked")  
public static <E> List<E> selectListByPage(String sqlId,Object parameter){  
    Map<String, Object> map = (Map<String, Object>) parameter;  
    String page = (String) map.get("page");  
    int pageNum = 1;  
    if(page != null && page.trim().length() != 0){  
        pageNum = Integer.parseInt(page);  
    }  
    PageHelper.startPage(pageNum, Constant.pageSize, true);  
    List<Object> result = getSqlSession(sqlId).selectList(sqlId, parameter);  
    return dealMapResult(result);  
}  
<c:forEach items="${list}" var="item">  
    <tr id='<c:out value="${item.menuId}"/>' align="left">  
        <td><c:out value="${item.parentId}"/></td>  
        <td><c:out value="${item.menuId}"/></td>  
        <td><c:out value="${item.menuName}"/></td>  
        <td><c:out value="${item.url}"/></td>  
        <td><c:out value="${item.title}"/></td>  
        <td><c:out value="${item.leaf}"/></td>  
        <td><c:out value="${item.orderSeq}"/></td>  
        <td onclick='goEdit(<c:out value="${item.menuId}"/>)'>编辑</td>  
        <td onclick='doDelete(<c:out value="${item.menuId}"/>)'>删除</td>  
    </tr>  
</c:forEach>  
    <tfoot>  
        <tr>  
            <td colspan="9" align="center" class="p">  
                <c:if test="${pageNum != 1}">  
                    <a href="list.html?query=a&page=${pageNum - 1}">上一页</a>  
                </c:if>  
                <c:if test="${pages != 1}">  
                    <c:forEach var="pageIndex" begin="1" end="${pages}">  
                        <c:choose>  
                            <c:when test="${pageNum == pageIndex}">  
                                <a>${pageIndex}</a>  
                            </c:when>  
                            <c:otherwise>  
                                <a href="list.html?query=a&page=${pageIndex}">${pageIndex}</a>  
                            </c:otherwise>  
                        </c:choose>  
                    </c:forEach>  
                </c:if>  
                <c:if test="${pageNum != pages}">  
                    <a href="list.html?query=a&page=${pageNum+1}">下一页</a>  
                </c:if>  
            </td>  
        </tr>  
    </tfoot> 

mybatis-config.xml

<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <!-- 4.0.0以后版本可以不设置该参数 -->
        <property name="dialect" value="mysql"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
        <!-- 和startPage中的pageNum效果一样-->
        <property name="offsetAsPageNum" value="true"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
        <property name="rowBoundsWithCount" value="true"/>
        <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
        <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
        <property name="pageSizeZero" value="true"/>
        <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
        <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
        <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
        <property name="reasonable" value="false"/>
        <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
        <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
        <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
        <!-- 不理解该含义的前提下,不要随便复制该配置 -->
        <!-- <property name="params" value="pageNum=pageHelperStart;pageSize=pageHelperRows;"/> -->
        <!-- 支持通过Mapper接口参数来传递分页参数 -->
        <property name="supportMethodsArguments" value="false"/>
        <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
        <property name="returnPageInfo" value="none"/>
    </plugin>
</plugins>

在BIZ调用查询数据的方法之前(不管是自己写的还是逆向工程生成的),先执行PageHelper.startPage(1, 3);其中1表示当前页码,3表示每页3条记录,返回的Page类继承了ArrayList,并可以获取总记录数。
统一返回值为Page(可以直接按List使用),方便在页面使用EL表达式,如 page.pageNum, {page.total}
对这种方式使用,一种是如果直接用Page包装list,还要单独get出来,再设置回去model.addAttribute(“pageNum”, list.getPageNum());
第二种是使用PageInfo对list再包装一次,页面就可以直接使用model.addAttribute(“list”, new PageInfo(list));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值