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

本文详细介绍了如何在Spring MyBatis项目中配置并使用PageHelper分页插件,实现数据库查询的高效分页功能。通过具体步骤和代码示例,展示了如何在XML配置文件中引入插件,并在Service层和Controller层应用分页,最终在前端展示分页结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1.  
  2. 把插件jar包导入项目(具体上篇有介绍http://blog.youkuaiyun.com/qq_33624284/article/details/72821811
  3. 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>

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

  • 新建sql语句,返回list结果集
<select id="selectByList" resultMap="BaseResultMap">

    select 

    <include refid="Base_Column_List" />

    from user_t

  </select>
  • service层
public List<User> selectByList() {

        return this.userDao.selectByList();

    }
  • 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";

  }

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;

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

List<User> userList = userService.selectByList();

PageInfo<User> p=new PageInfo<User>(userList);

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

  1. 控制层
model.addAttribute("page", p);
  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>

最后结果显示:(关键点${page.prePage}简单又快捷) 


这里写图片描述

前台需要传入的参数是当前页和页面显示数目,当然页面显示数目也可以后台规定,一般在接收参数时最好加上默认配置如下:

@RequestParam(defaultValue="1",value="pageNum")String pageNum, @RequestParam(defaultValue="10",value="pageSize")String pageSize

转载至: https://www.cnblogs.com/jpfss/p/8707264.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值