在Java的DAO層進行分頁查詢,通常需要以下幾個步驟:
確定每頁顯示的記錄數(頁面大小)和需要查詢的總記錄數。
計算總頁數。
使用SQL查詢語句進行分頁查詢。在查詢語句中使用LIMIT
(MySQL)或TOP
(SQL Server)關鍵字限制返回的記錄數,并使用OFFSET
(MySQL)或ROW_NUMBER()
(SQL Server)關鍵字跳過指定數量的記錄。
以下是一個使用Spring Data JPA進行分頁查詢的示例:
User
實體類,我們希望按用戶名進行分頁查詢:import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Page<User> findByUsername(String username, Pageable pageable);
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public Page<User> getUsersByUsername(String username, int pageNumber, int pageSize, String sortBy) {
Pageable pageable = PageRequest.of(pageNumber, pageSize, sortBy);
return userRepository.findByUsername(username, pageable);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public Page<User> getUsers(
@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "pageNumber", defaultValue = "0") int pageNumber,
@RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
@RequestParam(value = "sortBy", defaultValue = "username") String sortBy) {
return userService.getUsersByUsername(username, pageNumber, pageSize, sortBy);
}
}
現在,當你調用/users
接口時,將會返回按用戶名分頁查詢的結果。你可以根據需要調整頁面大小、當前頁數和排序參數。