浅谈Mybatis分页插件PageHelper的使用

前次课刚好讲到PageHelper 简单整理一下吧

有时候页面数据多的话 一个页面显示不下 下方会有页码按钮可供切换
实现方式有好几种 可以直接在数据表中按要求查询 但太麻烦 不推荐
此时可以用PageHelper,一个简单易用且功能强大的分页插件

使用方式:

1、当然是导入依赖

<dependency>
          <groupId>com.github.pagehelper</groupId>
          <artifactId>pagehelper</artifactId>
          <version>5.1.2</version>
</dependency>

2、配置配置文件

在SqlSessionFactoryBean的bean里添加一段配置

<!-- 分页插件配置 -->
<property name="plugins">
    <array>
        <!-- PageInterceptor页面拦截器 -->
        <bean class="com.github.pagehelper.PageInterceptor">
            <property name="properties">
                <props>
                    <!-- 配置方言 根据自己db的类型进行设置 -->
                    <prop key="helperDialect">mysql</prop>
                    <!-- 分页参数合理化 超过页数上线会查询最后一页数据 -->
                    <prop key="reasonable">true</prop>
                </props>
            </property>
        </bean>
    </array>
</property>

3、在需要分页的Service实现类中开启分页

往PageHelper的startPage()方法里传入页码每页显示的数量即可
废话不多说 直接贴代码

@Override
public List<UserInfo> findAll(Integer page,Integer size)
{
    // 开启分页
    PageHelper.startPage(page,size);
    return userInfoDao.findAll();
}

4、将得到的数据存放到PageInfo中

// 全部查询

@RequestMapping("/findAll.do")
public ModelAndView findAll(@RequestParam(defaultValue="1")Integer page,
                            @RequestParam(defaultValue="5")Integer size)
{
    // 调用service中的方法得到查询结果
    List<UserInfo> list = userInfoService.findAll(page,size);

    // 将得到的数据存放到PageInfo中
    PageInfo<UserInfo> pageInfo=new PageInfo<UserInfo>(list);

    return new ModelAndView("user-list","USERINFOLIST",pageInfo);
}

PageInfo类中包含了很多分页相关信息

简单罗列一下:

// 当前页 
private int pageNum;
// 每页的数量  
private int pageSize;  
// 当前页的数量  
private int size;  

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

// 第一页  
private int firstPage;  
// 前一页  
private int prePage;  

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

发布了56 篇原创文章 · 获赞 0 · 访问量 1187

猜你喜欢

转载自blog.csdn.net/Piconjo/article/details/104592607
今日推荐