MyBatis分页插件-PageHelper的配置与应用

长达好几个月的未接触pageHelper 今天写分页的时候居然不知道怎么写了 不得不说好记性不如烂笔头 还是做笔记留下会更加的深刻

列出一些基本属性


/**
 * 对Page<E>结果进行包装
 * <p/>
 * 新增分页的多项属性,主要参考:http://bbs.csdn.net/topics/360010907
 *
 * @author liuzh/abel533/isea533
 * @version 3.3.0
 * @since 3.2.2
 * 项目地址 : http://git.oschina.net/free/Mybatis_PageHelper
 */
@SuppressWarnings({"rawtypes", "unchecked"})
public class PageInfo<T> extends PageSerializable<T> {
    //当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;

    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"

    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总页数
    private int pages;

    //前一页
    private int prePage;
    //下一页
    private int nextPage;

    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
    //导航条上的第一页
    private int navigateFirstPage;
    //导航条上的最后一页
    private int navigateLastPage;

前端

效果图

在这里插入图片描述
代码

 <table class="table table-border table-bordered table-bg">
        <thead>
        <tr>
            <th scope="col" colspan="10">员工列表</th>
        </tr>
        <tr class="text-c">
            <th width="25"><input type="checkbox" name="" value=""></th>
            <th width="40">ID</th>
            <th width="150">用户名</th>
            <th width="90">手机</th>
            <th width="150">邮箱</th>
            <th width="80">性别</th>
            <th width="130">部门</th>
            <th width="100">创建人</th>
            <th width="100">创建时间</th>
            <th width="100">操作</th>
        </tr>
        </thead>
        <tbody>
        <c:forEach items="${pageInfo.list}" var="emp">
            <tr class="text-c">
                <td><input type="checkbox" value="1" name=""></td>
                <td>${emp.id}</td>
                <td>${emp.username}</td>
                <td>${emp.mobile}</td>
                <td>${emp.email}</td>
                <td>${emp.sex==1?"男":"女"}</td>
                <td>${emp.deptno}</td>
                <td>${emp.createUser}</td>
                <td>
                    <fmt:formatDate value="${emp.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
                </td>
                <td class="td-manage"><a style="text-decoration:none" onClick="admin_stop(this,'10001')" href="javascript:;" title="停用"><i class="Hui-iconfont">&#xe631;</i></a> <a title="编辑" href="javascript:;" οnclick="admin_edit('管理员编辑','admin-add.html','1','800','500')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe6df;</i></a> <a title="删除" href="javascript:;" οnclick="admin_del(this,'1')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe6e2;</i></a></td>
            </tr>
        </c:forEach>
        </tbody>
    </table>
    <jsp:include page="../common/page.jsp"/>

这里把分页条给分离开 增加复用性

page.jsp 代码如下

<body>
<%--显示分页导航条--%>
<div id="test1"></div>
<script TYPE="text/javascript">
    layui.use('laypage',function () {
        var laypage = layui.laypage;
        laypage.render({
            elem: 'test1'
            ,count: '${pageInfo.total}'
            ,limit: '${pageInfo.pageSize}'
            ,curr:  '${pageInfo.pageNum}'
            ,layout: [ 'prev', 'page', 'next', 'limit', 'skip','count']
            ,limits:[5,10,20]
            ,jump: function(obj,first){
                console.log(obj)
                if (!first){
                    location.href="${pageContext.request.contextPath}/${url}?pageNum="+obj.curr+"&pageSize="+obj.limit;
                }
            }
        });
    });

</script>

</body>

后端
page实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Page {
    private Integer pageNum =1;
    private Integer pageSize=5;

}

Controller

    @RequestMapping("/getEmppage")
    public String getEmpPage( ModelMap map, Page page){
          
        PageInfo<Emp> pageInfo = empService.getPage(page);

        map.put("pageInfo",pageInfo);
        map.put("url" ,"emp//getEmppage");
        pageInfo.getPages();
        return "emp/EmpList";
    }

service

getPage()

    public PageInfo<T> getPage(Page page);  //分页

Impl

 public PageInfo<T> getPage(Page page) {
   /**
     * 开始分页
     *
     * @param pageNum  页码
     * @param pageSize 每页显示数量
     */
        PageHelper.startPage(page.getPageNum(),page.getPageSize());
        List list = baseMapper().getList();
        return new PageInfo<T>(list);
    }

多种重载方法
补充:
在这里插入图片描述
在这里插入图片描述

Mapper

List<Emp> getList();  //分页

mapper.xml
sql 根据需要编写

 <select id="getList" resultMap="empResulet">
      SELECT
        e.*,
(
        SELECT
          cu.username
        FROM
          t_emp cu
        WHERE
        cu.id = e.create_user
       )as create_username,
        (
select up.username from t_emp up where up.id = e.update_user
) as update_username
FROM
t_emp e
order by create_time desc
    </select>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值