SSM项目实现分页功能
本次实现分页的方式:前台选择相对应的操作(如首页、下一页等),点击的同时传递参数到后台,后台通过接受的参数调用相应的方法实现分页。(本次分页基于SSM项目搭建成功的情况下)
SSM项目搭建–数据库的增删改查
1.在pom.xml文件中导入pagehelper的包
2.在applicationContext.xml文件中为sqlsessionfactroy加入以下配置。为下面的plugins的property。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 扫描bean包 使用别名 -->
<property name="typeAliasesPackage" value="com.suelta.bean"></property>
<!--配置加载映射文件 UserMapper.xml-->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<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进行分页之前,我们看看pagehelper的相关属性。这里主要关注size,pageNum,pages,list这几个参数。
//当前页
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;
4.这一过程我们分三步,因为我们是通过前台传递的参数来确定是哪一页分页和每一页所展示的数据量。所以,(1)我们在Controller层使用page和size来接收前端传来的数据。Controller层调用service层,故将值往下传,(2)并在service层所调用的函数中,加入**PageHelper.startPage(page,size);**即可。(3)最后通过在Controller层使用PageInfo,对其初始化,并传给ModelAndView中即可
下面是Controller层的函数
@RequestMapping("/findAll.do")
private ModelAndView findAll(@RequestParam(defaultValue = “1”) int page,@RequestParam(defaultValue = “4”) int size){
List userList = userService.findAll(page,size);
PageInfo pageInfos=new PageInfo(userList);
ModelAndView mv=new ModelAndView();
mv.setViewName(“user-list”);
mv.addObject(“pageInfos”,pageInfos);
return mv;
}
下面是service层
@Override
public List findAll(int page,int size) {
PageHelper.startPage(page,size);
return userDao.findAll();
}
5.下面为前端的页面代码。通过**${pageContext.request.contextPath}/user/findAll.do?page=1&size=5**来实现传值。
pageInfo.pages代表总页数;
pageInfo.pageNum代表当前页码;