springboot整合pagehelper

1.依赖

<!--https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.4.5</version>
		</dependency>
		
		<!--存在版本兼容性问题,不建议用此方式
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.3.2</version>
		</dependency>-->

2.yml文件配置

pagehelper:
  helperDialect: mysql
  #开启优化,如果开启优化,在分页页码结果没有数据的时候,会显示有数据的页码数据
  reasonable: true
  #是否支持接口参数来传递分页参数,默认false
  supportMethodsArguments: true
  params: count=countSql

3.使用举例

3.1.直接在查询接口上一行加上

  //只对下一行的查询有效,其中1是pageNum,10是pageSize
  PageHelper.startPage(1, 10);

3.2.在查询接口入参里面同时含有pageNum与pageSize的属性也会有分页效果
分页信息实体类

public class PageResult {
    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
    /**
     * 记录总数
     */
    private long totalSize;
    /**
     * 页码总数
     */
    private int totalPages;
    /**
     * 分页数据
     */
    private List<?> content;

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public long getTotalSize() {
        return totalSize;
    }

    public void setTotalSize(long totalSize) {
        this.totalSize = totalSize;
    }

    public int getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }

    public List<?> getContent() {
        return content;
    }

    public void setContent(List<?> content) {
        this.content = content;
    }

    public static PageResult getInstance(List list) {
        Page page = (Page) list;
        PageResult pageResult = new PageResult();
        pageResult.setTotalSize(page.getTotal());
        pageResult.setPageNum(page.getPageNum());
        pageResult.setPageSize(page.getPageSize());
        pageResult.setContent(page);
        pageResult.setTotalPages(page.getPages());
        return pageResult;
    }
}

分页入参实体

@Data
public class PageDto {

    private int pageNum;
    private int pageSize;
}

mapper层

public interface TlrDocEleMdMtMapper extends BaseMapper<TlrDocEleMdMt> {

    List<TlrDocEleMdMt> selectList1(PageDto dto);

    List<TlrDocEleMdMt> selectList2(int pageNum,int pageSize);

    List<TlrDocEleMdMt> selectList3(int pageSize);
}

xml文件

<?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.zyp.mapper.TlrDocEleMdMtMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zyp.model.entity.TlrDocEleMdMt">
        <id column="ID" property="id" />
        <result column="CODE" property="code" />
        <result column="NAME" property="name" />
        <result column="MD_TYPE" property="mdType" />
        <result column="CITY_NO" property="cityNo" />
        <result column="ORG_NO" property="orgNo" />
        <result column="POWER_SUPPLY_INSTITUTE" property="powerSupplyInstitute" />
        <result column="TEAM_NO" property="teamNo" />
        <result column="VOL_LEVEL" property="volLevel" />
        <result column="MODE" property="mode" />
        <result column="VOL_WAY" property="volWay" />
        <result column="WINDING_TYPE" property="windingType" />
        <result column="CAP1" property="cap1" />
        <result column="CAP2" property="cap2" />
        <result column="CAP3" property="cap3" />
        <result column="CT" property="ct" />
        <result column="PT" property="pt" />
        <result column="OWNER_SUB_ID" property="ownerSubId" />
        <result column="OWNER_SUB_NAME" property="ownerSubName" />
        <result column="OWNER_SUB_VOL_LEVEL" property="ownerSubVolLevel" />
        <result column="ADDRESS" property="address" />
        <result column="GPS_LON" property="gpsLon" />
        <result column="GPS_LAT" property="gpsLat" />
        <result column="RUN_DATE" property="runDate" />
        <result column="OPEN_LOSS" property="openLoss" />
        <result column="RATED_LOSS12" property="ratedLoss12" />
        <result column="RATED_LOSS13" property="ratedLoss13" />
        <result column="RATED_LOSS23" property="ratedLoss23" />
        <result column="FULL_LOSS" property="fullLoss" />
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        ID, CODE, NAME, MD_TYPE, CITY_NO, ORG_NO, POWER_SUPPLY_INSTITUTE, TEAM_NO, VOL_LEVEL, MODE, VOL_WAY, WINDING_TYPE, CAP1, CAP2, CAP3, CT, PT, OWNER_SUB_ID, OWNER_SUB_NAME, OWNER_SUB_VOL_LEVEL, ADDRESS, GPS_LON, GPS_LAT, RUN_DATE, OPEN_LOSS, RATED_LOSS12, RATED_LOSS13, RATED_LOSS23, FULL_LOSS
    </sql>
    <select id="selectList1" resultType="com.zyp.model.entity.TlrDocEleMdMt">
        select <include refid="Base_Column_List"/> from tlr_doc_ele_md_mt
    </select>

    <select id="selectList2" resultType="com.zyp.model.entity.TlrDocEleMdMt">
        select <include refid="Base_Column_List"/> from tlr_doc_ele_md_mt order by ID
    </select>

    <select id="selectList3" resultType="com.zyp.model.entity.TlrDocEleMdMt">
        select <include refid="Base_Column_List"/> from tlr_doc_ele_md_mt
    </select>

</mapper>

serviceImpl类

@Service
public class TlrDocEleMdMtServiceImpl extends ServiceImpl<TlrDocEleMdMtMapper, TlrDocEleMdMt> implements TlrDocEleMdMtService {

    @Autowired
    private TlrDocEleMdMtMapper tlrDocEleMdMtMapper;

    @Override
    public PageResult getAll(PageDto dto) {
        PageResult pageResult = new PageResult();
        //有分页
        List<TlrDocEleMdMt> tlrDocEleMdMts = tlrDocEleMdMtMapper.selectList1(dto);
        //有分页
        List<TlrDocEleMdMt> tlrDocEleMdMts1 = tlrDocEleMdMtMapper.selectList2(dto.getPageNum(),dto.getPageSize());
        //没有分页
        List<TlrDocEleMdMt>tlrDocEleMdMts3 = tlrDocEleMdMtMapper.selectList3(dto.getPageSize());        
        PageInfo<TlrDocEleMdMt> tlrDocEleMdMtPageInfo = new PageInfo<>(tlrDocEleMdMts);
        pageResult.setPageNum(tlrDocEleMdMtPageInfo.getPageNum());
        pageResult.setPageSize(tlrDocEleMdMtPageInfo.getPageSize());
        pageResult.setTotalSize(tlrDocEleMdMtPageInfo.getTotal());
        pageResult.setTotalPages(tlrDocEleMdMtPageInfo.getPages());
        pageResult.setContent(tlrDocEleMdMtPageInfo.getList());
        return pageResult;
    }
}

3.3.查询结果转成分页实体
方法1:

	Page<TlrDocEleMdMt> page = (Page<TlrDocEleMdMt>) tlrDocEleMdMts;
    pageResult.setPageNum(page.getPageNum());
    pageResult.setPageSize(page.getPageSize());
    pageResult.setTotalSize(page.getTotal());
    pageResult.setTotalPages(page.getPages());
    pageResult.setContent(page);

方法2:

	PageInfo<TlrDocEleMdMt> tlrDocEleMdMtPageInfo = new PageInfo<>(tlrDocEleMdMts);
    pageResult.setPageNum(tlrDocEleMdMtPageInfo.getPageNum());
    pageResult.setPageSize(tlrDocEleMdMtPageInfo.getPageSize());
    pageResult.setTotalSize(tlrDocEleMdMtPageInfo.getSize());
    pageResult.setTotalPages(tlrDocEleMdMtPageInfo.getPages());
    pageResult.setContent(tlrDocEleMdMtPageInfo.getList());

4.特殊处理

若查询接口返回的实体类与要求返回的类不一致,比如查询接口返回的 List < TlrDocEleMdMt > list,TlrDocEleMdMt类里面参数有些是不需要返回的,此时我们只使用它的分页信息(除了内容),新建一个类,具体如下:
新建的实体类
TlrResponseDto

@Data
public class TlrResponseDto {

    @ApiModelProperty(value = "设备ID")
    private String id;

    @ApiModelProperty(value = "设备编码")
    private String code;

    @ApiModelProperty(value = "设备名称")
    private String name;
}

具体处理:

		PageResult pageResult = new PageResult();
        PageHelper.startPage(1, 10);
        List<TlrDocEleMdMt> list = tlrDocEleMdMtMapper.selectList(null);
        Page<TlrDocEleMdMt> page = (Page<TlrDocEleMdMt>) list;
        //把TlrDocEleMdMt转成TlrResponseDto
        List<TlrResponseDto> list1 = Lists.newArrayList();
        list.forEach(l->{
            TlrResponseDto response=new TlrResponseDto();
            response.setId(l.getId());
            response.setCode(l.getCode());
            response.setName(l.getName());
            list1.add(response);
        });
        //封装分页信息
        PageInfo<TlrDocEleMdMt> tlrDocEleMdMtPageInfo = new PageInfo<>(list);
        pageResult.setPageNum(tlrDocEleMdMtPageInfo.getPageNum());
        pageResult.setPageSize(tlrDocEleMdMtPageInfo.getPageSize());
        pageResult.setTotalSize(tlrDocEleMdMtPageInfo.getSize());
        pageResult.setTotalPages(tlrDocEleMdMtPageInfo.getPages());
        pageResult.setContent(list1);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值