官網上有個比較詳細的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值與數據表中的屬性名相互綁定,一一對應,這樣就動態了。