如何用pagehelper实现分页
程序员文章站
2024-03-18 13:35:46
...
引言
作为后端开发人员,写分页可谓是基本操作了,各种大大小小的项目都少不了写分页,但是如果自己实现的话,虽然难度不大,但是还是比较繁琐的,而且容易写错,这时候,我们就可以利用前辈大佬造的*了--pagehelper ,pagehelper是一款分页插件,利用它,我们就可以很方便的实现分页,极大的提高我们的开发效率
如何使用
1.引入相关依赖
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.jsqlparser/jsqlparser -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>1.0</version>
</dependency>
2.在spring-mybatis.xml中配置拦截器插件
<bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref = "dataSource"/>
<property name="typeAliasesPackage" value = "com.jay.entity"/>
<property name="mapperLocations" value = "classpath:com/jay/mapper/*.xml"/>
<!--分页插件配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个 -->
<value>
params=value1
</value>
</property>
</bean>
</array>
</property>
</bean>
3.实现在mapper以及mapper.xml中增加查询方法以及语句
public List<Song> query()throws Exception;
<select id = "query" resultType="Song">
select *from songs
</select>
4.实现service方法
public List<Song> query() throws Exception{
List<Song> list = songMapper.query();
return list;
}
5.在controller中使用分页
@RequestMapping("queryAll")
public ModelAndView quereyAll(@RequestParam(required=true, defaultValue = "1")Integer page, @RequestParam(required=false,defaultValue="5")Integer pageSize)throws Exception{
ModelAndView mlv = new ModelAndView();
PageHelper.startPage(page, pageSize); //这段代码表示程序开始分页了,从第一页开始,每页显示5条记录
List<Song> list = songService.query();
PageInfo<Song> pageInfo = new PageInfo<Song>(list);
mlv.addObject("list", list);
mlv.addObject("pageInfo", pageInfo);
mlv.setViewName("/admin/queryAll");
return mlv;
}
6.这样,在jsp中使用啦,例如这样
<ul class = "pagination">
<li> <a href = "queryAll?page=1">首页</a> </li>
<li <c:if test="${pageInfo.pageNum==1}">class="disabled"</c:if>><a href="queryAll?page=${pageInfo.pageNum-1 }">«</a></li>
<c:forEach begin="1" end="${pageInfo.size}" step="1" var="pageNo">
<li <c:if test="${pageInfo.pageNum==pageNo}">class="active"</c:if>><a href="queryAll?page=${pageNo}">${pageNo}</a></li>
</c:forEach>
<li <c:if test="${pageInfo.pageNum==pageInfo.pages}">class="disabled"</c:if>><a href="queryAll?page=${pageInfo.pageNum+1}">»</a></li>
<li> <a href = "queryAll?page=${page.pages }">尾页</a> </li>
</ul>
便可以实现如下效果啦
7.其中PageInfo这个类(不需要我们自己写,在com.github.pagehelper.PageInfo中)中有一些参数,我们需要留意一下
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于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 boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
上一篇: 用C语言编写纸牌游戏(数据结构)
推荐阅读
-
如何用pagehelper实现分页
-
mybatis插件pageHelper实现分页效果
-
使用mybatis插件PageHelper实现分页效果
-
mybatis插件pageHelper实现分页效果
-
SpringBoot+Mybatis+Druid+PageHelper实现多数据源并分页方法
-
PageHelper插件实现一对多查询时的分页问题
-
使用mybatis插件PageHelper实现分页效果
-
springboot +mybatis 使用PageHelper实现分页并带条件模糊查询功能
-
springboot +mybatis 使用PageHelper实现分页并带条件模糊查询功能
-
demo-PageHelper实现分页增删改查