分页的实现方式
1、内存实现:从数据库中查询所有的记录,然后在jvm中获取页面
2、数据库实现:使用limit获取查询的页面记录,pageHelper也是使用这种方式实现分页
分页项目搭建步骤:
1、构建mysql数据库
2、搭建ssm框架
3、创建实体类
4、根据项目需求创建mapper(dao)
查询所有数据:
List<User> findAllUser();
5、根据mapper创建映射文件,然后配置mapper.xml
<select id="findAllUser" resultType="User">
select * from user
</select>
6、在service层中使用插件实现分页:
(1)导入依赖
在pom.xml中导入pageHelper依赖
<!-- pageHelper依赖 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
(2)配置插件
在mybatis配置文件mybatisConf.xml中配置映射信息:
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
<!-- 如果pageSize为0,不分页-->
<property name="pageSizeZero" value="true"/>
</plugin>
</plugins>
若在整合后不使用mybatis配置文件,
在spring配置文件中使用:
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource"/>
<!-- 传入PageHelper的插件 -->
<property name="plugins">
<array>
<!-- 传入插件的对象 -->
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<prop key="helperDialect">mysql</prop>
<prop key="reasonable">true</prop>
</props>
</property>
</bean>
</array>
</property>
</bean>
(3)使用插件
在查询所有数据前使用 PageHelper.startPage(pageNum,pageSize);
pageNum是第几页,pageSize指这一页有多少行记录
数据库操作对象执行的sql语句为
select * from user limit pageNum , pageSize
接着使用mapper中查询语句查询;
将返回的结果传给com.github.pagehelper.PageInfo对象
@Override
public PageInfo pageInfoService(int pageNum, int pageSize) {
PageHelper.startPage(pageNum,pageSize);
List<Users> allUsersMapper = usersMapper.findAllUsersMapper();
com.github.pagehelper.PageInfo pageInfo= new com.github.pagehelper.PageInfo<> (allUsersMapper);
return pageInfo;
}
当然写在Controller里更简单
7、@Controller层返回pageInfo对象
@RequestMapping("/pageInfo")
public PageInfo pageInfo(String pageNum){
int pagenum = Integer.parseInt(pageNum);
int pagesize=2;
PageInfo pageInfo = userService.pageInfoService(pagenum, pagesize);
return pageInfo;
}
8、jsp使用对象创建页面
<div align="center">
<table >
<tr>
<td>编号</td>
<td>卡号</td>
<td>姓名</td>
<td>性别</td>
<td>电话</td>
<td>开户日期</td>
<td>余额</td>
</tr>
<c:forEach items="${pageInfo.list}" var="r">
<tr>
<td>${r.uid}</td>
<td>${r.unum}</td>
<td>${r.uname}</td>
<td>${r.usex}</td>
<td>${r.utel}</td>
<td>${r.utime}</td>
<td>${r.ubalance}</td>
</tr>
</c:forEach>
</table>
<br/>
<br/>
<a href="/pageInfo?pageNum=1">首页</a>
<a href="/pageInfo?pageNum=${pageInfo.prePage==0?1:pageInfo.prePage}">上一页</a>
<a href="/pageInfo?pageNum=${pageInfo.pageNum==pageInfo.pages?pageInfo.pages:pageInfo.nextPage}">下一页</a>
<a href="/pageInfo?pageNum=${pageInfo.pages}">尾页</a>
<br/>
<br/>
当前是第${pageInfo.pageNum}页,共${pageInfo.pages}页。
每页${pageInfo.pageSize}条,共${pageInfo.total}条记录。
<br/>
</div>