导入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.starter.version}</version>
</dependency>
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
MessageCenterController Controller层接收dto参数并返回vo参数
messageCenters.getResult()是Page类中的方法,返回的是一个List类型对象也就是页面元素list集合, messageCenters.getTotal() 返回的是一个long类型对象也就是页面元素的总数量.
public java.util.List<E> getResult() { /* compiled code */ }
public long getTotal() { /* compiled code */ }
@RestController
@RequestMapping("/admin/messageCenter")
@Slf4j
public class MessageCenterController {
@Autowired
private MessageCenterService messageCenterService;
@ApiOperation("消息中心列表")
@PostMapping("/list")
public String queryMessageCenterList(@RequestBody MessageCenterDto messageCenterDto) {
Page<MessageCenter> messageCenters = null;
try {
messageCenters = messageCenterService.queryMessageCenterList(messageCenterDto);
} catch (Exception e) {
LogUtils.error(log, e, "获取消息中心列表异常", "", null);
return ResponseUtil.fail("获取消息中心列表异常");
}
//ResponseUtil.appSuccess(rsp,data);
return ResponseUtil.pageSuccessLAYUI(messageCenters.getResult(), messageCenters.getTotal());
}
MessageCenterService Service层 分页查询代码
PageHelper 调用静态方法startPage(int pageNum, int pageSize)分页,而Page继承于ArrayList,实际上是一个可封装页面元素的集合.
@Service
public class MessageCenterService extends BaseServiceImpl<MessageCenterMapper, MessageCenter> {
@Autowired
private MessageCenterMapper messageCenterMapper;
public Page<MessageCenter> queryMessageCenterList(MessageCenterDto messageCenterDto) {
PageHelper.startPage(messageCenterDto.getPageNum() == null ? 0 : messageCenterDto.getPageNum(),
messageCenterDto.getPageSize() == null ? 10 : messageCenterDto.getPageSize());
Page<MessageCenter> messageCenterList = messageCenterMapper.getMessageCenterList(messageCenterDto);
return messageCenterList;
}
MessageCenterMapper.xml Mapper层 查询实现代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.jxmcloud.business.shop.mapper.MessageCenterMapper">
<select id="getMessageCenterList" resultType="com.jxmcloud.business.shop.model.MessageCenter">
select * from message_center m
where 1=1
<if test="type!=null and type!=''">
and m.type =#{type}
</if>
<if test="status != null">
and m.`status` = #{status}
</if>
<if test="createStartTime!=null">
and m.create_time <![CDATA[ >= ]]> #{createStartTime}
</if>
<if test="createEndTime!=null">
and m.create_time <![CDATA[ <= ]]> #{createEndTime}
</if>
<if test="commissioningStartTime!=null">
and m.commissioning_time <![CDATA[ >= ]]> #{commissioningStartTime}
</if>
<if test="commissioningEndTime!=null">
and m.commissioning_time <![CDATA[ <= ]]> #{commissioningEndTime}
</if>
ORDER BY m.create_time desc
</select>
<update id="updateMessageByStatus" parameterType="com.jxmcloud.business.shop.model.MessageCenter">
UPDATE message_center
<set>
<if test="status == 1">
`status` = 1,
commissioning_time = DATE_FORMAT(NOW(),'%Y-%m-%d %H:%m:%s'),
</if>
<if test="status ==0">
`status` = 0,
commissioning_time = null,
</if>
</set>
WHERE id=#{id}
</update>
</mapper>
分析分页插件源码
package com.github.pagehelper;
public class PageHelper extends com.github.pagehelper.page.PageMethod implements com.github.pagehelper.Dialect {
```}
package com.github.pagehelper.page;
public abstract class PageMethod {
```
public static <E> com.github.pagehelper.Page<E> startPage(int pageNum, int pageSize) { /* compiled code */ }
```
}
PageHelper 调用静态方法startPage(int pageNum, int pageSize)分页,而Page继承于ArrayList,实际上是一个可封装页面元素的集合.
// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available
package com.github.pagehelper;
public class Page <E> extends java.util.ArrayList<E> implements java.io.Closeable {
private static final long serialVersionUID = 1L;
private int pageNum; //页码
private int pageSize; //单页条数
private int startRow;
private int endRow;
private long total; //页数
private int pages;
private boolean count;
private java.lang.Boolean reasonable;
private java.lang.Boolean pageSizeZero;
private java.lang.String countColumn;
private java.lang.String orderBy;
private boolean orderByOnly;
public Page() { /* compiled code */ }
public Page(int pageNum, int pageSize) { /* compiled code */ }
public Page(int pageNum, int pageSize, boolean count) { /* compiled code */ }
private Page(int pageNum, int pageSize, boolean count, java.lang.Boolean reasonable) { /* compiled code */ }
public Page(int[] rowBounds, boolean count) { /* compiled code */ }
public java.util.List<E> getResult() { /* compiled code */ }
public int getPages() { /* compiled code */ }
public com.github.pagehelper.Page<E> setPages(int pages) { /* compiled code */ }
public int getEndRow() { /* compiled code */ }
public com.github.pagehelper.Page<E> setEndRow(int endRow) { /* compiled code */ }
public int getPageNum() { /* compiled code */ }
public com.github.pagehelper.Page<E> setPageNum(int pageNum) { /* compiled code */ }
public int getPageSize() { /* compiled code */ }
public com.github.pagehelper.Page<E> setPageSize(int pageSize) { /* compiled code */ }
public int getStartRow() { /* compiled code */ }
public com.github.pagehelper.Page<E> setStartRow(int startRow) { /* compiled code */ }
public long getTotal() { /* compiled code */ }
public void setTotal(long total) { /* compiled code */ }
public java.lang.Boolean getReasonable() { /* compiled code */ }
public com.github.pagehelper.Page<E> setReasonable(java.lang.Boolean reasonable) { /* compiled code */ }
public java.lang.Boolean getPageSizeZero() { /* compiled code */ }
public com.github.pagehelper.Page<E> setPageSizeZero(java.lang.Boolean pageSizeZero) { /* compiled code */ }
public java.lang.String getOrderBy() { /* compiled code */ }
public <E> com.github.pagehelper.Page<E> setOrderBy(java.lang.String orderBy) { /* compiled code */ }
public boolean isOrderByOnly() { /* compiled code */ }
public void setOrderByOnly(boolean orderByOnly) { /* compiled code */ }
private void calculateStartAndEndRow() { /* compiled code */ }
public boolean isCount() { /* compiled code */ }
public com.github.pagehelper.Page<E> setCount(boolean count) { /* compiled code */ }
public com.github.pagehelper.Page<E> pageNum(int pageNum) { /* compiled code */ }
public com.github.pagehelper.Page<E> pageSize(int pageSize) { /* compiled code */ }
public com.github.pagehelper.Page<E> count(java.lang.Boolean count) { /* compiled code */ }
public com.github.pagehelper.Page<E> reasonable(java.lang.Boolean reasonable) { /* compiled code */ }
public com.github.pagehelper.Page<E> pageSizeZero(java.lang.Boolean pageSizeZero) { /* compiled code */ }
public com.github.pagehelper.Page<E> countColumn(java.lang.String columnName) { /* compiled code */ }
public com.github.pagehelper.PageInfo<E> toPageInfo() { /* compiled code */ }
public com.github.pagehelper.PageSerializable<E> toPageSerializable() { /* compiled code */ }
public <E> com.github.pagehelper.Page<E> doSelectPage(com.github.pagehelper.ISelect select) { /* compiled code */ }
public <E> com.github.pagehelper.PageInfo<E> doSelectPageInfo(com.github.pagehelper.ISelect select) { /* compiled code */ }
public <E> com.github.pagehelper.PageSerializable<E> doSelectPageSerializable(com.github.pagehelper.ISelect select) { /* compiled code */ }
public long doCount(com.github.pagehelper.ISelect select) { /* compiled code */ }
public java.lang.String getCountColumn() { /* compiled code */ }
public void setCountColumn(java.lang.String countColumn) { /* compiled code */ }
public java.lang.String toString() { /* compiled code */ }
public void close() { /* compiled code */ }
}