PageInfo分页修改总页数

2020-03-03  本文已影响0人  淡定_2407

在项目中出现一条记录需要进行2行显示,即源数据查询5条,在页面上行需要展示10条;

示例如下:

如果源数据为7条,页面传送参数如下:

页码:1,展示数量:10;

需返回:页码:1,展示数量:10,总条数为14;

页码:2,展示数量:10;

需返回:页码:1,展示数量:4,总条数为14;

此时如果使用了PageInfo对象,需要先对参数的页面展示数/2进行源表查询;

Integer pageNum = (dto.getPageNum() ==null || dto.getPageNum() <1) ?1 : dto.getPageNum();

//由于前台页面同一条数据要显示2条,所以后台展示的数量需要/2

Integer pageSize = dto.getPageSize() ==null ?5 : dto.getPageSize() /2;

PageHelper.startPage(pageNum, pageSize);

//获取缺口数

List list =stockGapsMapper.list(dto);

PageInfo<StockGapsDto> orgPageInfo = new PageInfo<>(list);

System.out.println("----------1");

stockGapsMapper.list(dto);

System.out.println("----------2");

PageHelper.startPage(pageNum, pageSize);

stockGapsMapper.list(dto);

需要注意的是PageHelper.startPage只对最近一次的查询起作用,且需要对返回的总记录数*2,只需将对应的查询,新建一个查询语句 *_COUNT即可完成匹配,如下--查询的语句为:list,获取总条数则用:list_COUNT:

<select id="list" resultMap="baseMap">

    select*,a.available_stock - IFNULL(b.consume_stock ,0) gaps_stock

    from stock_detail_book 

    where org_code = #{orgCode}

</select>

<select id="list_COUNT" resultType="Long">

    selectcount(1)*2

    from stock_detail_book

    where org_code = #{orgCode}

</select>

PageHelper会自动进行分页,可以查看到参数LIMIT ,如果是第3页,参数是2个(10,5)--第一个参数是页码(2)*展示数量(5)=10,第二个参数是展示数量,执行日志如下:

2020-03-03 10:31:26.962 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list_COUNT : 145 ] - ==> Preparing: select count(1) from stock_detail_book where  org_code = ? 

2020-03-03 10:31:26.963 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list_COUNT : 145 ] - ==> Parameters: JD(String)

2020-03-03 10:31:26.980 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list_COUNT : 145 ] - <==      Total: 1

2020-03-03 10:31:26.982 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - ==>  Preparing: select *,a.available_stock - IFNULL(b.consume_stock ,0) gaps_stock from stock_detail_book where  org_code = ?  LIMIT ?

2020-03-03 10:31:26.982 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - ==> Parameters: JD(String), 5(Integer)

2020-03-03 10:31:27.006 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - <==      Total: 5

----------1

2020-03-03 10:31:30.663 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - ==>  Preparing: select *,a.available_stock - IFNULL(b.consume_stock ,0) gaps_stock from stock_detail_book where  org_code = ? 

2020-03-03 10:31:30.761 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - ==> Parameters: JD(String)

2020-03-03 10:31:32.202 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - <==      Total: 7

----------2

2020-03-03 10:31:38.553 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list_COUNT : 145 ] - ==>  Preparing:  select count(1) from stock_detail_bookwhere  org_code = ? 

2020-03-03 10:31:38.651 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list_COUNT : 145 ] - ==> Parameters: JD(String)

2020-03-03 10:31:38.765 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list_COUNT : 145 ] - <==      Total: 1

2020-03-03 10:31:39.004 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - ==>  Preparing: select *,a.available_stock - IFNULL(b.consume_stock ,0) gaps_stock from stock_detail_book where  org_code = ? LIMIT ?

2020-03-03 10:31:39.104 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - ==> Parameters: JD(String),  5(Integer)

2020-03-03 10:31:40.247 [lms-stock-service] [ http-nio-7600-exec-1 ] DEBUG [c.a.h.lms.stock.dao.IStockGapsMapper.list : 145 ] - <==      Total: 5

上一部分的代码可以获取总数,但我们返回参数时,仍需将展示的页码修改为10 ,返回对象进行替换,代码如下:

orgPageInfo.setPageSize(pageSize*2);

orgPageInfo.setList(listResponse);

上一篇 下一篇

猜你喜欢

热点阅读