El proyecto SpringBoot utiliza el asistente de página del complemento de paginación de MyBatis

Para algunos de los datos mostrados en la lista, debido a que la cantidad de datos puede ser relativamente grande, estamos acostumbrados a usar la paginación. En este momento, el asistente de página del plug-in de paginación provisto por MyBatis puede lograr esta función.

Es relativamente sencillo usar pagehelper en el proyecto springboot. Antes de que finalice la paginación, nuestra capa de servicio llama a la capa dao y, después de obtener los datos de la lista mostrada, regresa directamente a la página frontal a través de la capa del controlador. Para implementar la paginación aquí, debe cambiar las operaciones de la capa del controlador y la capa de servicio, y solo se necesitan dos clases muy importantes, PageHelper y PageInfo.

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

El primer paso: primero introducir la dependencia de pagehelper

<!--分页插件-->
	<dependency>
		<groupId>com.github.pagehelper</groupId>
		<artifactId>pagehelper-spring-boot-starter</artifactId>
		<version>1.2.3</version>
	</dependency>

Realizar alguna configuración (algunos dicen que es inútil y no necesita ser configurado)

#分页插件配置
pagehelper:
  reasonable: true
  helper-dialect: mysql
  support-methods-arguments: true
  params: count=countSql

Paso 2: Luego, en la capa del controlador.
Bajo nuestra interfaz, necesitamos pasar dos parámetros básicos, pageNo (número de páginas) y pageSize (cuántos datos se almacenan en uno). El código específico es el siguiente

@GetMapping(value = "/product_list")
    public String product_list(Model model, 
                               @RequestParam(value = "pageNo",defaultValue = "1")int pageNo,
                               @RequestParam(value = "pageSize",defaultValue = "6")int pageSize){
    
    
        PageInfo<ProductVo> page = productService.listProcuctVo(pageNo,pageSize);
        model.addAttribute("pageInfo",page);
        return "product_list";
    }

Se puede ver aquí que la capa de servicio devuelve un objeto de PageInfo <clase de entidad>. Encapsula cierta información de la paginación y los datos de la lista devuelta.

Paso 3: Escribir la capa de servicio
Este es el paso más importante: la capa de servicio acepta los datos de la lista de la capa dao y el número de página pageNo y pageSize por número de página dos parámetros de la capa del controlador. La referencia del código específico es la siguiente.

  public PageInfo<ProductVo> listProcuctVo(int pageNo, int pageSize) {
    
    
        PageHelper.startPage(pageNo,pageSize);
        List<ProductVo> productVoList = productMapper.selectPorductlist();
        PageInfo<ProductVo> page = new PageInfo<ProductVo>(productVoList);
        return page;
    }

Dos lugares importantes aquí

 PageHelper.startPage(pageNo,pageSize);

Establezca el número de páginas y el tamaño de la página.
Después de recibir los datos de la lista de la capa dao, llame a PageInfo para convertir los datos de la operación de paginación.

PageInfo<ProductVo> page = new PageInfo<ProductVo>(productVoList);

Aquí debe prestar especial atención a la escritura de los parámetros de llamada.
Los datos específicos encapsulados por PageInfo son los siguientes:

public class PageInfo<T> implements Serializable {
    
    
    private static final long serialVersionUID = 1L;
    private int pageNum;//当前页
    private int pageSize;//当前页数据量
    private int size;
    private int startRow;
    private int endRow;
    private long total;//总数据量
    private int pages;//总页数
    private List<T> list;//封装需要返回的数据列表
    private int prePage;//上一页
    private int nextPage;//下一页
    private boolean isFirstPage;
    private boolean isLastPage;
    private boolean hasPreviousPage;//首页
    private boolean hasNextPage;//尾页
    private int navigatePages;
    private int[] navigatepageNums;//页数数组
    private int navigateFirstPage;
    private int navigateLastPage;
    }

La página aquí realmente encapsula todos los parámetros en la paginación, las variables que aparecen en el código anterior.
Paso 4: Visualización de la página
Cuando devolvemos el objeto pageInfo en el modelo usando el nombre pagInfoe en la capa del controlador.

 model.addAttribute("pageInfo",page);

La lista de parámetros de la página actual que necesitamos está en pageInfo.list, y puede sustituir directamente pageInfo.xx con otros parámetros.
Visualización parcial
Estos son los datos para obtener la lista de datos.

<tr class="success" th:each="product : ${pageInfo.list}">
        <td th:text="${product.product_name}"></td>
        <td><img th:src="@{
    
    ${product.product_img}}" width="60px" height="60px"/></td>
        <td th:text="${product.product_price}"></td>
        <td th:text="${product.miaosha_price}"></td>
        <td th:text="${product.stock_count}"></td>
        <td> <a th:href="'/product_detail/'+${product.id}">详情</a></td>
    </tr>

Esto es para obtener los datos relevantes de la página.

 <ul class="pager">
        <li th:if="${pageInfo.hasPreviousPage}">
            <a th:href="'?pageNo=1'">首页</a>
        </li>
        <li th:if="${pageInfo.hasPreviousPage}">
            <a th:href="'?pageNo='+${pageInfo.prePage}">上一页</a>
        </li>
        <li th:each="nav : ${pageInfo.navigatepageNums}">
            <a th:href="'?pageNo='+${nav}" th:text="${nav}" th:if="${nav != pageInfo.pageNum}"></a>
            <span style="font-weight: bold" th:if="${nav == pageInfo.pageNum}" th:text="${nav}"></span>
        </li>
        <li th:if="${pageInfo.hasNextPage}">
            <a th:href="'?pageNo='+${pageInfo.nextPage}">下一页</a>
        </li>
        <li th:if="${pageInfo.hasNextPage}">
            <a th:href="'?pageNo='+${pageInfo.pages}">尾页</a>
        </li>
        <span>
        当前页号:<span th:text="${pageInfo.pageNum}"> </span> / <span th:text="${pageInfo.pages}"></span>: 总页数</span>&nbsp;&nbsp;&nbsp;&nbsp;
        总结果数:<span th:text="${pageInfo.total}"></span>
    </ul>

Mostrar resultados
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Wangdiankun/article/details/106460420
Recomendado
Clasificación