A versão do mybatisplus é:
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency>
Vamos primeiro falar sobre os cenários em que os resultados da consulta serão necessários e, em seguida, paginar, em vez de paginar diretamente, para obter os resultados.
Quando precisar contar o número total de alguns indicadores nesta consulta, é necessário obter todos os dados e depois acumulá-los. Se você paginar diretamente, obterá apenas os indicadores estatísticos das primeiras 10 páginas, o que não é suficiente.
Sem mais delongas, vamos direto ao código:
private Page<ProductOrderRecord> pageList(List<ProductOrderRecord> productOrderRecords, RecordListJson recordListJson) {
Page<ProductOrderRecord> page = new Page<>(null != recordListJson.getPageNo() ? recordListJson.getPageNo() : 1, null != recordListJson.getPageSize() ? recordListJson.getPageSize() : 10);
page.setRecords(productOrderRecords.isEmpty() ? Collections.emptyList() : startPage(productOrderRecords, null != recordListJson.getPageNo() ? recordListJson.getPageNo() : 1, null != recordListJson.getPageSize() ? recordListJson.getPageSize() : 10));
page.setCurrent(null != recordListJson.getPageNo() ? recordListJson.getPageNo() : 1);
page.setSize(null != recordListJson.getPageSize() ? recordListJson.getPageSize() : 10);
page.setTotal(productOrderRecords.size());
return page;
}
public static List startPage(List list, Integer pageNum, Integer pageSize) {
if (list == null) {
return Collections.emptyList();
}
if (list.isEmpty()) {
return Collections.emptyList();
}
//记录总数
Integer count = list.size();
//开始索引
int fromIndex = (pageNum - 1) * pageSize;
//结束索引
int toIndex = pageNum * pageSize;
if (fromIndex + 1 > count) {
return Collections.emptyList();
}
if (pageNum * pageSize > count) {
toIndex = count;
}
return list.subList(fromIndex, toIndex);
}
O principal é dividir a coleção de acordo com o método subList da coleção de listas. Use-o se precisar.