pagehelper分页插件使用
1.导入依赖
<!-- MyBatis分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
2.在Spring整合mybatis配置文件中找到SqlSessionFactoryBean配置分页插件
<!-- 配置SqlSessionFactoryBean整合MyBatis -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定MyBatis全局配置文件位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- 指定Mapper.xml配置文件位置 -->
<property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml"/>
<!-- 装配数据源 -->
<property name="dataSource" ref="dataSource"/>
<!--配置插件-->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<props>
<!--配置数据库方言,告诉当前PageHelper当前使用的数据库-->
<prop key="dialect">mysql</prop>
<!--配置页码的合理化修正,在1~总页码之间修正页码-->
<prop key="reasonable">true</prop>
</props>
</property>
</bean>
</array>
</property>
</bean>
3.在mybatis查询语句配置文件中配置查询语句
<!--分页语句-->
<select id="selectAdminByKeyword" resultMap="BaseResultMap">
select id,login_acct,user_pswd,user_name,email,create_time
from t_admin
where login_acct like concat("%",#{keyword},"%")
or user_name like concat("%",#{keyword},"%")
or email like concat ("%",#{keyword},"%")
</select>
4.在dao接口中添加该查询方法
List<Admin>selectAdminByKeyword(String keyword);
5.service层接口方法
PageInfo<Admin> getPageInfo(String keyword,Integer pageNum,Integer pageSize);
6.service实现类
@Override
public PageInfo<Admin> getPageInfo(String keyword, Integer pageNum, Integer pageSize) {
//1.调用PageHelper的静态方法开启分页功能
PageHelper.startPage(pageNum,pageSize);
//2.执行查询
List<Admin> list = adminMapper.selectAdminByKeyword(keyword);
//3.封装到PageInfo对象中
return new PageInfo<>(list);
}
7.controller层
@RequestMapping("/admin/get/page.html")
public String getPageInfo(
//使用defaultValue默认属性,当请求中没有对应参数时,使用默认值
//keyword默认值使用空字符串,和sql语句配饰实现两种情况适配
@RequestParam(value = "keyword",defaultValue = "") String keyword,
//默认查询到第一页
@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNum,
//默认一页五条
@RequestParam(value = "pageSize",defaultValue = "5") Integer pageSize,
ModelMap modelMap){
//ModelMap是一个接口实现 ,作用是将Model数据填充到request域
//调用service方法获取PageInfo对象
PageInfo<Admin> pageInfo = adminService.getPageInfo(keyword, pageNum, pageSize);
//将PageInfo对象存入模型
modelMap.addAttribute(CrowdConstant.ATTR_NAME_PAGE_INFO,pageInfo);
return "admin-page";
}
8.当把pageInfo对象存入模型后,也就是此时request域中有了对应的分页信息
在前端页面可以通过el,jstl表达式获取到对应的值
<c:if test="${!empty requestScope.pageInfo.list}">
<c:forEach items="${requestScope.pageInfo.list}" var="admin" varStatus="myStatus">
<tr>
<%--循环计数从1开始--%>
<td>${myStatus.count}</td>
<td><input type="checkbox"></td>
<td>${admin.loginAcct}</td>
<td>${admin.userName}</td>
<td>${admin.email}</td>
<td>
<button type="button" class="btn btn-success btn-xs"><i
class=" glyphicon glyphicon-check"></i></button>
<button type="button" class="btn btn-primary btn-xs"><i
class=" glyphicon glyphicon-pencil"></i></button>
<button type="button" class="btn btn-danger btn-xs"><i
class=" glyphicon glyphicon-remove"></i></button>
</td>
</tr>
</c:forEach>
</c:if>