亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

SpringBoot使用Mybatis-PageHelper

標簽:
SpringBoot

前言

之前一篇文章介绍了

配置文件增加PageHelper的配置,由于demo很简单,只用到了分页,所以没有增加其他配置,只设置了分页方言,完整代码如下:

##端口号server.port=8888##日志级别logging.level.com.dalaoyang.dao.UserMapper=debug##数据库urlspring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false##数据库用户名spring.datasource.username=root##数据库密码spring.datasource.password=root##数据库驱动spring.datasource.driver-class-name=com.mysql.jdbc.Driver#pagehelper分页插件配置pagehelper.helperDialect=mysql

实体类User代码如下:

package com.dalaoyang.entity;import org.apache.ibatis.type.Alias;/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.entity
 * @email [email protected]
 * @date 2018/6/22
 */@Alias("user")public class User {    private int id;    private String user_name;    private String user_password;    public User(String user_name, String user_password) {        this.user_name = user_name;        this.user_password = user_password;
    }    public User(int id, String user_name, String user_password) {        this.id = id;        this.user_name = user_name;        this.user_password = user_password;
    }    public int getId() {        return id;
    }    public void setId(int id) {        this.id = id;
    }    public String getUser_name() {        return user_name;
    }    public void setUser_name(String user_name) {        this.user_name = user_name;
    }    public String getUser_password() {        return user_password;
    }    public void setUser_password(String user_password) {        this.user_password = user_password;
    }
}

启动类代码如下:

package com.dalaoyang;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringbootMybatisPagehelperApplication {    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisPagehelperApplication.class, args);
    }
}

新建一个UserMapper,之前介绍的整合mybatis是使用的mapper方式,本文选择使用注解方式,代码如下:

package com.dalaoyang.dao;import com.dalaoyang.entity.User;import com.github.pagehelper.Page;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Select;/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.dao
 * @email [email protected]
 * @date 2018/6/22
 */@Mapperpublic interface UserMapper {    @Select("SELECT * FROM USER")    Page<User> getUserList();
}

还是一如既往的使用controller作为测试,代码如下:

package com.dalaoyang.controller;import com.dalaoyang.dao.UserMapper;import com.dalaoyang.entity.User;import com.github.pagehelper.Page;import com.github.pagehelper.PageHelper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.controller
 * @email [email protected]
 * @date 2018/6/22
 */@RestControllerpublic class UserController {    @Autowired
    UserMapper userMapper;    //http://localhost:8888/getUserList?pageNum=1&pageSize=2
    @RequestMapping("/getUserList")    public Page<User> getUserList(Integer pageNum, Integer pageSize){
        PageHelper.startPage(pageNum, pageSize);
        Page<User>  userList= userMapper.getUserList();        return userList;
    }
}

到这里项目就完全创建完成了。

测试

浏览器访问http://localhost:8888/getUserList?pageNum=1&pageSize=2,结果如下:

image

然后查看控制台如下:

image

可以看到sql已经进行分页了。

然后回头看controller的方法,返回的Page对象中包含了很多关于分页的参数等数据,下面是Page的代码,具体使用可以查看一下:

//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package com.github.pagehelper;import java.io.Closeable;import java.util.ArrayList;import java.util.List;public class Page<E> extends ArrayList<E> implements Closeable {    private static final long serialVersionUID = 1L;    private int pageNum;    private int pageSize;    private int startRow;    private int endRow;    private long total;    private int pages;    private boolean count;    private Boolean reasonable;    private Boolean pageSizeZero;    private String countColumn;    private String orderBy;    private boolean orderByOnly;    public Page() {        this.count = true;
    }    public Page(int pageNum, int pageSize) {        this(pageNum, pageSize, true, (Boolean)null);
    }    public Page(int pageNum, int pageSize, boolean count) {        this(pageNum, pageSize, count, (Boolean)null);
    }    private Page(int pageNum, int pageSize, boolean count, Boolean reasonable) {        super(0);        this.count = true;        if (pageNum == 1 && pageSize == 2147483647) {            this.pageSizeZero = true;
            pageSize = 0;
        }        this.pageNum = pageNum;        this.pageSize = pageSize;        this.count = count;        this.calculateStartAndEndRow();        this.setReasonable(reasonable);
    }    public Page(int[] rowBounds, boolean count) {        super(0);        this.count = true;        if (rowBounds[0] == 0 && rowBounds[1] == 2147483647) {            this.pageSizeZero = true;            this.pageSize = 0;
        } else {            this.pageSize = rowBounds[1];            this.pageNum = rowBounds[1] != 0 ? (int)Math.ceil(((double)rowBounds[0] + (double)rowBounds[1]) / (double)rowBounds[1]) : 0;
        }        this.startRow = rowBounds[0];        this.count = count;        this.endRow = this.startRow + rowBounds[1];
    }    public List<E> getResult() {        return this;
    }    public int getPages() {        return this.pages;
    }    public Page<E> setPages(int pages) {        this.pages = pages;        return this;
    }    public int getEndRow() {        return this.endRow;
    }    public Page<E> setEndRow(int endRow) {        this.endRow = endRow;        return this;
    }    public int getPageNum() {        return this.pageNum;
    }    public Page<E> setPageNum(int pageNum) {        this.pageNum = this.reasonable != null && this.reasonable && pageNum <= 0 ? 1 : pageNum;        return this;
    }    public int getPageSize() {        return this.pageSize;
    }    public Page<E> setPageSize(int pageSize) {        this.pageSize = pageSize;        return this;
    }    public int getStartRow() {        return this.startRow;
    }    public Page<E> setStartRow(int startRow) {        this.startRow = startRow;        return this;
    }    public long getTotal() {        return this.total;
    }    public void setTotal(long total) {        this.total = total;        if (total == -1L) {            this.pages = 1;
        } else {            if (this.pageSize > 0) {                this.pages = (int)(total / (long)this.pageSize + (long)(total % (long)this.pageSize == 0L ? 0 : 1));
            } else {                this.pages = 0;
            }            if (this.reasonable != null && this.reasonable && this.pageNum > this.pages) {                this.pageNum = this.pages;                this.calculateStartAndEndRow();
            }

        }
    }    public Boolean getReasonable() {        return this.reasonable;
    }    public Page<E> setReasonable(Boolean reasonable) {        if (reasonable == null) {            return this;
        } else {            this.reasonable = reasonable;            if (this.reasonable && this.pageNum <= 0) {                this.pageNum = 1;                this.calculateStartAndEndRow();
            }            return this;
        }
    }    public Boolean getPageSizeZero() {        return this.pageSizeZero;
    }    public Page<E> setPageSizeZero(Boolean pageSizeZero) {        if (pageSizeZero != null) {            this.pageSizeZero = pageSizeZero;
        }        return this;
    }    public String getOrderBy() {        return this.orderBy;
    }    public <E> Page<E> setOrderBy(String orderBy) {        this.orderBy = orderBy;        return this;
    }    public boolean isOrderByOnly() {        return this.orderByOnly;
    }    public void setOrderByOnly(boolean orderByOnly) {        this.orderByOnly = orderByOnly;
    }    private void calculateStartAndEndRow() {        this.startRow = this.pageNum > 0 ? (this.pageNum - 1) * this.pageSize : 0;        this.endRow = this.startRow + this.pageSize * (this.pageNum > 0 ? 1 : 0);
    }    public boolean isCount() {        return this.count;
    }    public Page<E> setCount(boolean count) {        this.count = count;        return this;
    }    public Page<E> pageNum(int pageNum) {        this.pageNum = this.reasonable != null && this.reasonable && pageNum <= 0 ? 1 : pageNum;        return this;
    }    public Page<E> pageSize(int pageSize) {        this.pageSize = pageSize;        this.calculateStartAndEndRow();        return this;
    }    public Page<E> count(Boolean count) {        this.count = count;        return this;
    }    public Page<E> reasonable(Boolean reasonable) {        this.setReasonable(reasonable);        return this;
    }    public Page<E> pageSizeZero(Boolean pageSizeZero) {        this.setPageSizeZero(pageSizeZero);        return this;
    }    public Page<E> countColumn(String columnName) {        this.countColumn = columnName;        return this;
    }    public PageInfo<E> toPageInfo() {
        PageInfo<E> pageInfo = new PageInfo(this);        return pageInfo;
    }    public PageSerializable<E> toPageSerializable() {
        PageSerializable<E> serializable = new PageSerializable(this);        return serializable;
    }    public <E> Page<E> doSelectPage(ISelect select) {
        select.doSelect();        return this;
    }    public <E> PageInfo<E> doSelectPageInfo(ISelect select) {
        select.doSelect();        return this.toPageInfo();
    }    public <E> PageSerializable<E> doSelectPageSerializable(ISelect select) {
        select.doSelect();        return this.toPageSerializable();
    }    public long doCount(ISelect select) {        this.pageSizeZero = true;        this.pageSize = 0;
        select.doSelect();        return this.total;
    }    public String getCountColumn() {        return this.countColumn;
    }    public void setCountColumn(String countColumn) {        this.countColumn = countColumn;
    }    public String toString() {        return "Page{count=" + this.count + ", pageNum=" + this.pageNum + ", pageSize=" + this.pageSize + ", startRow=" + this.startRow + ", endRow=" + this.endRow + ", total=" + this.total + ", pages=" + this.pages + ", reasonable=" + this.reasonable + ", pageSizeZero=" + this.pageSizeZero + '}' + super.toString();
    }    public void close() {
        PageHelper.clearPage();
    }
}

其他

关于更多Mybatis-PageHelper配置及介绍可以查看下面网站:
https://gitee.com/free/Mybatis_PageHelper
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

源码下载 :大老杨码云



作者:dalaoyang
链接:https://www.jianshu.com/p/48b190bf08fe

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消