mybatis的PageHelper简单使用
使用maven开发
步骤:
- 在pom.xml中引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
- 在mybatis全局配置文件中配置PageHelper插件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入 pageHelper插件 -->
<!--注意这里要写成PageInterceptor, 5.0之前的版本都是写PageHelper, 5.0之后要换成PageInterceptor-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--reasonable:分页合理化参数,默认值为false,直接根据参数进行查询。
当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。-->
<!--<property name="reasonable" value="true"/>-->
</plugin>
</plugins>
</configuration>
- 定义pojo、dao、service类和mapper文件
public class User {
private String username;
private String passwd;
//get set方法
}
@Repository
public class UserDao {
public List<User> query(User user);
}
注意:SQL里面不需要写limit,pagehelper会帮我们做好
<select id="query" parameterType="com.User" resultType="com.User">
select username, passwd
from user
<where>
<if test="username != null and username != '' ">
username = #{username}
</if>
</where>
</select>
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> query(User user, int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize); //这句要在查询代码之前,pageNum从1开始
List<User> userList = userDao.query(user);
PageInfo<User> pageInfo = new PageInfo<User>(userList);
/*
pageInfo.list:就是userList
pageInfo.pageNum:当前页码
pageInfo.pages:页数
pageInfo.total:总记录数
*/
}
}
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 int nextPage;
//最后一页
private int lastPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;