- 对于使用Mybatis时候有事很烦的就是分页了,要limit还要count算出总页数啥的,因此就有了我们今天的PageHelper插件可以非常便捷的实现分页。
- 我们之前已经搭建了一个简单的springboot+mybatis+mysql的框架,那就在这个基础上做个分页,老规则首先引入依赖:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>
3、其次配置yml文件
######### 分页插件 ##########
pagehelper:
helperDialect: mysql #分页插件方言选择
reasonable: true #合理化参数,设为true时pageNum<=0 时会查第一页, pageNum>pages(超过总数时),会查询最后一页
supportMethodsArguments: true
4.编写maper,maper.xml,service
@Repository
public interface UserMapper {
User selectById(Integer id);
List<User> findByPage(User user);
}
@Service
public class UserService implements UserMapper {
@Autowired
private UserMapper userMapper;
@Override
public User selectById(Integer id) {
return userMapper.selectById(id);
}
@Override
public List<User> findByPage(User user) {
List<User> list=userMapper.findByPage(user);
return list;
}
}
<select id="findByPage" parameterType="com.cxw.entity.User" resultType="com.cxw.entity.User">
select * from user
<where>
<if test="id != null ">
id=#{id}
</if>
</where>
</select>
5.关键地方编写我们的逻辑
@RequestMapping(method = RequestMethod.GET,value = "/user/list")
public PageBean getUser(){
int pageNo=2;
int pageSize=5;
Page page= PageHelper.startPage(pageNo,pageSize);
List<User> list=userService.findByPage(new User());
PageBean<User> userPageBean=new PageBean(pageNo,pageSize,(int)page.getTotal());
userPageBean.setData(list);
return userPageBean;
}
我们可以看出关键代码就是 Page page= PageHelper.startPage(pageNo,pageSize);其他是不变的。PageBean是我个人的一个简单实体类
public class PageBean<T> {
//当前页
private Integer currentPage = 1;
private Integer pageSize = 10;
private Integer totalNum;
private Integer isMore;
private Integer totalPage;
private Integer startIndex;
private List<T> data;
public PageBean() {
super();
}
public PageBean(Integer currentPage, Integer pageSize, Integer totalNum) {
this.currentPage = currentPage;
this.pageSize = pageSize;
this.totalNum = totalNum;
this.totalPage = (this.totalNum+this.pageSize-1)/this.pageSize;;
this.isMore = this.currentPage >= this.totalPage?0:1;
this.startIndex = (this.currentPage-1)*this.pageSize;;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalNum() {
return totalNum;
}
public void setTotalNum(Integer totalNum) {
this.totalNum = totalNum;
}
public Integer getIsMore() {
return isMore;
}
public void setIsMore(Integer isMore) {
this.isMore = isMore;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getStartIndex() {
return startIndex;
}
public void setStartIndex(Integer startIndex) {
this.startIndex = startIndex;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
}
然后访问接口,就这样一个简单的分页就完成了。
代码路径:https://gitee.com/wangzaiwork/springboot-ssm.git
----------------------------写的不好仅供参考---------------------------------