pagehelper的使用

关于Spring+mybatis+PageHelper分页插件PageHelper的使用策略

原创  2017年06月01日 10:33:14
  • 10526
  1. 把插件jar包导入项目(具体上篇有介绍http://blog.csdn.net/qq_33624284/article/details/72821811
  2. spring-mybatis.xml文件中配置
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:com/wl/goldatg/mapping/*.xml"></property>
    <!-- 配置分页插件 -->
     <property name="plugins">
        <array>
          <bean class="com.github.pagehelper.PageHelper">
            <property name="properties">
              <value>
                dialect=mysql
                reasonable=true
              </value>
            </property>
          </bean>
        </array>
      </property>
  </bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

## 下面我们就可以使用 ##

  • 新建sql语句,返回list结果集
<select id="selectByList" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from user_t
  </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • service层
public List<User> selectByList() {
        return this.userDao.selectByList();
    }
  • 1
  • 2
  • 3
  • Controller类
@RequestMapping("/userList")
  public String userList(@RequestParam(required=true,defaultValue="1") Integer page,HttpServletRequest request,Model model){
      //PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
      PageHelper.startPage(page, 3);
      List<User> userList = userService.selectByList();
      PageInfo<User> p=new PageInfo<User>(userList);
      model.addAttribute("page", p);
      model.addAttribute("userList",userList);
      return "showUser";
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

PageInfo这个类是插件里的类,非常方便的调用,分页再次提高性能:

    //当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;
    //排序
    private String orderBy;

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

    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总记录数
    private long total;
    //总页数
    private int pages;
    //结果集
    private List<T> list;

    //第一页
    private int firstPage;
    //前一页
    private int prePage;
    //下一页
    private int nextPage;
    //最后一页
    private int lastPage;

    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

使用PageInfo这个类,你需要将查询出来的list放进去:

List<User> userList = userService.selectByList();
PageInfo<User> p=new PageInfo<User>(userList);
  • 1
  • 2

页面使用非常方便,直接贴代码:

  1. 控制层
model.addAttribute("page", p);
  • 1
  1. 前台页面
<body>
  <center>
        <table width="200" border="1">
          <tr>
            <th scope="col">序号</th>
            <th scope="col">ID</th>
            <th scope="col">姓名</th>
            <th scope="col">密码</th>
            <th scope="col">年龄</th>
          </tr>
          <c:forEach begin="0" step="1" items="${userList}" var="list" varStatus="userlist">
          <tr>
            <td>${userlist.count}</td>
            <td>${list.id}</td>
            <td>${list.userName}</td>
            <td>${list.password}</td>
            <td>${list.age}</td>
          </tr>
          </c:forEach>
        </table>
        <p>一共${page.pages}页</p>
        <a href="userList?page=${page.firstPage}">第一页</a>
        <a href="userList?page=${page.nextPage}">下一页</a>
        <a href="userList?page=${page.prePage}">上一页</a>
        <a href="userList?page=${page.lastPage}">最后页</a>
    </center>
  </body>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

最后结果显示:(关键点${page.prePage}简单又快捷) 
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值