Mybatis-plus – 分页 – RowBounds
Server 类
@Slf4j @Transactional @Service public class AvatarServiceImpl implements AvatarService { @Autowired private AvatarDao avatarDao ; @Autowired private PaginationProperties paginationProperties ; // do 。。。 @Override public Page<Avatar> doFondPageObject(Integer pageCurrent, String name) { log.debug("doFondPageObject pageCurrent={} name={}",pageCurrent,name); Assert.isArgumentValid(pageCurrent==null||pageCurrent<1, "页码异常"); /**查询:[分页前]总数据量*/ Wrapper<Avatar> wrapper = //条件 new EntityWrapper<Avatar>() .like(name!=null&&!"".equals(name),"name", name); Integer totalDataCount = //[分页前]总数据量 avatarDao.selectCount(wrapper); Assert.isNoFound(totalDataCount==null||totalDataCount==0, "没有数据"); /**查询分页*/ Integer pageSize = //以后再定制化 paginationProperties.getPageSize(); int offset = //开始位置 paginationProperties.getStartIndex(pageCurrent); RowBounds rowBounds = //分页查询条件 new RowBounds(offset, pageSize); List<Avatar> list = avatarDao.selectPage(rowBounds, wrapper); Assert.isNoFound(list==null||list.size()==0, "没有数据!"); return new Page<Avatar>(list, totalDataCount, pageCurrent, pageSize); } }
其中 paginationProperties 、 page
paginationProperties :
@Data @Configuration @ConfigurationProperties(prefix = "page.config") public class PaginationProperties { /** * 默认 每页 数据量 */ final static private Integer DEFAULT_PAGESIZE = 10 ; /** * 每页多少条数据 */ private Integer pageSize = DEFAULT_PAGESIZE ; /** * 工具:计算分页的startIndex * @param pageCurrent 当前页码 1~n * @return startIndex */ public Integer getStartIndex(Integer pageCurrent) { return (pageCurrent-1)*pageSize ; } }
page
@Data public class Page<T> implements Serializable{ private static final long serialVersionUID = 7844855365725887051L; /**数据s*/ private List<T> datas ; /**(分页前)总数据数*/ private Integer totalDataCount = 0 ; /**总页数*/ private Integer pageTotal = 0 ; /**当前页码*/ private Integer pageCurrent = 1 ; /**当前页数据量*/ private Integer pageSize = 3; public Page(List<T> datas, Integer totalDataCount, Integer pageCurrent, Integer pageSize) { this.datas = datas; this.totalDataCount = totalDataCount; this.pageCurrent = pageCurrent; this.pageSize = pageSize; this.pageTotal = (totalDataCount-1)/pageSize + 1; } }