Mybatis分頁插件PageHelper的簡單實現

  1. 對於使用Mybatis時候有事很煩的就是分頁了,要limit還要count算出總頁數啥的,因此就有了我們今天的PageHelper插件可以非常便捷的實現分頁。
  2. 我們之前已經搭建了一個簡單的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
----------------------------寫的不好僅供參考---------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章