- 對於使用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
----------------------------寫的不好僅供參考---------------------------------