Spring-boot中MyBatis-Plus實現分頁操作

官網上有個比較詳細的demo,下面是地址。

https://git.oschina.net/baomidou/mybatisplus-spring-boot

首先,新建一個分頁工具類

public class PageUtils implements Serializable {
	private static final long serialVersionUID = 1L;
	//總記錄數
	private int totalCount;
	//每頁記錄數
	private int pageSize;
	//總頁數
	private int totalPage;
	//當前頁數
	private int currPage;
	//列表數據
	private List<?> list;
	
	/**
	 * 分頁
	 * @param list        列表數據
	 * @param totalCount  總記錄數
	 * @param pageSize    每頁記錄數
	 * @param currPage    當前頁數
	 */
	public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
		this.list = list;
		this.totalCount = totalCount;
		this.pageSize = pageSize;
		this.currPage = currPage;
		this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
	}

	/**
	 * 分頁
	 */
	public PageUtils(Page<?> page) {
		this.list = page.getRecords();
		this.totalCount = page.getTotal();
		this.pageSize = page.getSize();
		this.currPage = page.getCurrent();
		this.totalPage = page.getPages();
	}

	public int getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getCurrPage() {
		return currPage;
	}

	public void setCurrPage(int currPage) {
		this.currPage = currPage;
	}

	public List<?> getList() {
		return list;
	}

	public void setList(List<?> list) {
		this.list = list;
	}
	
}

然後在相關類的Service層實現操作,舉個例子

public PageUtils findBatchPage(Map<String, Object> params) {
        String roleName = (String)params.get("roleName");
        Integer createUserId = (Integer)params.get("creator_id");

        Page<RoleEntity> page = this.selectPage(
                new Query<RoleEntity>(params).getPage(),
                new EntityWrapper<RoleEntity>()
                        .like(StringUtils.isNotBlank(roleName),"role_name", roleName)
                        .eq(createUserId != null,"creator_id", createUserId)
        );

        return new PageUtils(page);
    }

這裏的參數是個map,從map中獲取key值爲roleName,和creator_id的參數value值,然後利用mybatisp'lus的Page類,新建一個頁面。

其中,new Query是獲取頁面相關參數。EntityWrapper是設置相關的查詢條件,like表示模糊查詢,eq表示等值查詢,然後返回一個Page。

由於map可以理解成一個數組,所以理論上你可以放許多查詢條件。

這樣的好處較原先的mybatis來講,不用寫xml映射的sql語句。完全解放出來。涵蓋了一切查詢條件,不用重複工作。利用HashMap,實際上也是有不足的,比如你無法動態的去查找,你必須在這個Service層把每一個查詢條件手動的去列上去。應該是存在一種動態的查詢方法的,將key值與數據表中的屬性名相互綁定,一一對應,這樣就動態了。

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