A implementação de back-end Java não usa pagehelper. Como implementar paginação manuscrita?

A implementação de back-end Java não usa pagehelper. Como implementar paginação manuscrita?

Se você não usar um plugin de paginação como o PageHelper, poderá implementar a lógica de paginação manualmente. Aqui está um exemplo de paginação manuscrita usando um backend Java:

Primeiro, determine a quantidade de dados exibidos por página e o número da página atual.

int pageSize = 10; // 每页显示的数据量
int currentPage = 1; // 当前页码

Instrução SQL que determina a quantidade total de dados consultados.

String countSql = "SELECT COUNT(*) FROM your_table";

Execute a instrução SQL acima para obter o volume total de dados.

// 执行countSql语句,返回结果集ResultSet
// 假设使用JDBC连接数据库,可以使用Statement或者PreparedStatement执行查询操作
ResultSet countResult = statement.executeQuery(countSql);

int totalCount = 0;
if (countResult.next()) {
    
    
    totalCount = countResult.getInt(1); // 获取第一列的数据作为总数据量
}
countResult.close();

Calcule o número total de páginas com base na quantidade total de dados e na quantidade de dados exibidos por página.

int totalPages = (int) Math.ceil((double) totalCount / pageSize);

Calcule o deslocamento com base no número da página atual e na quantidade de dados exibidos em cada página

String pageSql = "SELECT * FROM your_table LIMIT ?, ?";

Execute a consulta de paginação para obter os dados da página atual.

// 执行pageSql语句,设置偏移量和每页数据量的参数
// 假设使用JDBC连接数据库,可以使用PreparedStatement执行查询操作
PreparedStatement pageStatement = connection.prepareStatement(pageSql);
pageStatement.setInt(1, offset);
pageStatement.setInt(2, pageSize);

ResultSet pageResult = pageStatement.executeQuery();

// 遍历结果集,获取分页数据
while (pageResult.next()) {
    
    
    // 处理每一行数据
}

pageResult.close();
pageStatement.close();

Através das etapas acima, você pode implementar manualmente a função de paginação. Deve-se notar que este é apenas um exemplo simples. Em aplicações reais, pode ser necessário lidar com mais exceções e verificação de parâmetros. Ao mesmo tempo, a implementação específica do código pode variar dependendo do tipo e estrutura de banco de dados específico.

Se o front-end precisar de uma lista. Como faço para devolver para ele após a paginação usando Java?

Suponha que você tenha concluído o código de consulta de paginação manual e possa obter os dados da página atual.

List<YourDataModel> dataList = new ArrayList<>();

// 执行分页查询,获取当前页的数据
while (pageResult.next()) {
    
    
    YourDataModel data = new YourDataModel();
    // 假设YourDataModel是你的数据模型类,可以根据需要设置相应的属性值
    // 例如:data.setId(pageResult.getInt("id"));
    //       data.setName(pageResult.getString("name"));
    dataList.add(data);
}

pageResult.close();
pageStatement.close();

Encapsule a lista de dados e as informações de paginação em um objeto de resultado.

// 使用Jackson、Gson等库将结果对象转换成JSON字符串
String jsonResult = YourJsonConverter.convertToJson(result);

Retorne uma string JSON como resposta ao frontend.

// 将JSON字符串作为响应返回给前端
response.getWriter().write(jsonResult);

No exemplo acima, usamos uma classe chamada PageResult para encapsular os resultados da paginação. Você pode personalizar esta classe de acordo com suas próprias necessidades e realizar a conversão JSON de acordo com os requisitos de estruturas ou bibliotecas específicas.

Depois que o front-end recebe essa string JSON, ele pode analisar os dados e as informações de paginação para exibição e processamento.

Se minha consulta não realizar consulta de paginação, como posso retornar todos os resultados após a paginação?

Conclua a operação de consulta e obtenha todos os dados do resultado.

List<YourDataModel> dataList = new ArrayList<>();

// 执行查询操作,获取所有的结果数据
while (resultSet.next()) {
    
    
    YourDataModel data = new YourDataModel();
    // 设置数据属性
    dataList.add(data);
}

resultSet.close();
statement.close();

Execute o processamento de paginação de acordo com as informações de paginação exigidas pelo front-end (como a quantidade de dados exibidos em cada página e o número da página atual).

int pageSize = 10; // 每页显示的数据量
int currentPage = 1; // 当前页码

int totalCount = dataList.size(); // 总数据量
int totalPages = (int) Math.ceil((double) totalCount / pageSize); // 总页数

int startIndex = (currentPage - 1) * pageSize; // 计算起始索引
int endIndex = currentPage * pageSize; // 计算结束索引

if (endIndex > totalCount) {
    
    
    endIndex = totalCount; // 确保结束索引不超过总数据量
}

List<YourDataModel> pageDataList = dataList.subList(startIndex, endIndex); // 获取当前页的数据

Encapsule dados de paginação e informações de paginação em um objeto de resultado.

// 创建一个结果对象,包含数据列表和分页信息
PageResult<YourDataModel> result = new PageResult<>();
result.setDataList(pageDataList); // 设置数据列表

result.setCurrentPage(currentPage); // 设置当前页码
result.setPageSize(pageSize); // 设置每页显示的数据量
result.setTotalCount(totalCount); // 设置总数据量
result.setTotalPages(totalPages); // 设置总页数

Use um método apropriado para converter o objeto de resultado no formato exigido pelo front-end, como o formato JSON.

// 使用Jackson、Gson等库将结果对象转换成JSON字符串
String jsonResult = YourJsonConverter.convertToJson(result);

Retorne uma string JSON como resposta ao frontend.

// 将JSON字符串作为响应返回给前端
response.getWriter().write(jsonResult);

Observe que no exemplo acima realizamos o processamento de paginação manualmente. Em aplicativos reais, o tratamento de exceções e a verificação de parâmetros podem ser necessários de acordo com requisitos específicos. Ao mesmo tempo, a implementação específica do código pode variar dependendo do tipo e estrutura de banco de dados específico.

Acho que você gosta

Origin blog.csdn.net/weixin_50503886/article/details/132310151
Recomendado
Clasificación