Java后端實現不用pagehelper。手寫分頁如何實現?
如果你不使用PageHelper這樣的分頁插件,你可以手動實現分頁邏輯。下面是一個使用Java后端手寫分頁的示例:
首先,確定每頁顯示的數據量和當前頁碼。
int pageSize = 10; // 每頁顯示的數據量
int currentPage = 1; // 當前頁碼
確定查詢總數據量的SQL語句。
String countSql = "SELECT COUNT(*) FROM your_table";
執行上述SQL語句,獲取總數據量。
// 執行countSql語句,返回結果集ResultSet
// 假設使用JDBC連接數據庫,可以使用Statement或者PreparedStatement執行查詢操作
ResultSet countResult = statement.executeQuery(countSql);int totalCount = 0;
if (countResult.next()) {totalCount = countResult.getInt(1); // 獲取第一列的數據作為總數據量
}
countResult.close();
根據總數據量和每頁顯示的數據量計算總頁數。
int totalPages = (int) Math.ceil((double) totalCount / pageSize);
根據當前頁碼和每頁顯示的數據量計算偏移量
String pageSql = "SELECT * FROM your_table LIMIT ?, ?";
執行分頁查詢,獲取當前頁的數據。
// 執行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();
通過以上步驟,你就可以手動實現分頁功能了。需要注意的是,這只是一個簡單的示例,實際應用中可能需要處理更多的異常情況和參數校驗。同時,根據具體的數據庫類型和框架,代碼的具體實現方式可能會有所不同。
要是前端需要一個list。我如何使用Java分頁后給他返回?
假設你已經完成了手動分頁查詢的代碼,可以得到當前頁的數據。
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();
將數據列表和分頁信息封裝成一個結果對象。
// 使用Jackson、Gson等庫將結果對象轉換成JSON字符串
String jsonResult = YourJsonConverter.convertToJson(result);
將JSON字符串作為響應返回給前端。
// 將JSON字符串作為響應返回給前端
response.getWriter().write(jsonResult);
上述示例中,我們使用了一個名為 PageResult 的類來封裝分頁結果,你可以根據自己需求自定義該類,并根據具體框架或庫的要求進行JSON轉換。
當前端接收到這個JSON字符串后,就可以解析其中的數據和分頁信息,進行展示和處理了。
要是我查詢沒有做分頁查詢,如何將全部結果分頁后返回?
完成查詢操作,獲取到所有的結果數據。
List<YourDataModel> dataList = new ArrayList<>();// 執行查詢操作,獲取所有的結果數據
while (resultSet.next()) {YourDataModel data = new YourDataModel();// 設置數據屬性dataList.add(data);
}resultSet.close();
statement.close();
根據前端需要的分頁信息(如每頁顯示的數據量和當前頁碼),進行分頁處理。
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); // 獲取當前頁的數據
將分頁數據和分頁信息封裝成一個結果對象。
// 創建一個結果對象,包含數據列表和分頁信息
PageResult<YourDataModel> result = new PageResult<>();
result.setDataList(pageDataList); // 設置數據列表result.setCurrentPage(currentPage); // 設置當前頁碼
result.setPageSize(pageSize); // 設置每頁顯示的數據量
result.setTotalCount(totalCount); // 設置總數據量
result.setTotalPages(totalPages); // 設置總頁數
使用合適的方式將結果對象轉換為前端需要的格式,如JSON格式。
// 使用Jackson、Gson等庫將結果對象轉換成JSON字符串
String jsonResult = YourJsonConverter.convertToJson(result);
將JSON字符串作為響應返回給前端。
// 將JSON字符串作為響應返回給前端
response.getWriter().write(jsonResult);
請注意,上述示例中我們手動進行了分頁處理,實際應用中可能需要根據具體需求進行異常處理、參數校驗等。同時,根據具體的數據庫類型和框架,代碼的具體實現方式可能會有所不同。