一、分页工具类
/**
* @author 作者 han
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult<T> implements Serializable{
private static final long serialVersionUID = -2848996493573325801L;
private int pageNo;// 分页起始页
private int pageSize;// 每页记录数
private T list;// 返回的记录集合
private long totalCount;// 总记录条数
private long totalPage;// 总页数
public static PageResult buildPage(int pageNo, int pageSize, int totalCount) {
PageResult page = new PageResult();
page.pageNo = pageNo;
page.pageSize = pageSize;
page.totalCount = totalCount;
page.totalPage = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1);
return page;
}
public static <T> PageResult buildPage(int pageNo, int pageSize, int totalCount, T list) {
PageResult page = PageResult.buildPage(pageNo, pageSize, totalCount);
page.setList(list);
return page;
}
public static PageResult buildPage(BaseInfoQO qo, int totalCount) {
PageResult page = new PageResult();
page.pageNo = qo.getPageNo();
Integer pageSize = qo.getPageSize();
page.pageSize = pageSize;
page.totalCount = totalCount;
page.totalPage = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1);
return page;
}
}
二、应用
1、查询条件实体类封装
/**
* @Author han
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MessageQO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "页码", required = true, example = "1")
@NotNull(message = "页码不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true, example = "10")
@NotNull(message = "每页显示数不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
2、controller层应用
public ResultBody selectAllSystemMessage(@RequestBody MessageQO messageQO){
return ResultBody.success(messageService.selectAllSystemMessage(messageQO));
}
3、service层应用
@Override
public PageResult selectAllSystemMessage(MessageQO messageQO) {
int count = messageDao.countSystemMessage();
if (count == 0) {
return PageResult.buildPage(messageQO.getPageNo(), messageQO.getPageSize(), count);
}
Integer pageNo = messageQO.getPageNo();
messageQO.buildCurrentPage();
List<SystemMessageDO> messageList = messageDao.selectAllSystemMessage(messageQO);
return PageResult.buildPage(pageNo, messageQO.getPageSize(), count, messageList);
}
4、sql实现
<select id="selectAllSystemMessage">
select
*
from message
where type = 0 and is_deleted = 0
order by create_time desc
LIMIT #{pageNo},#{pageSize}
</select>