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值与数据表中的属性名相互绑定,一一对应,这样就动态了。

猜你喜欢

转载自blog.csdn.net/TateBrwonJava/article/details/81129347