pageable实现分页
时间: 2024-05-05 18:17:47 浏览: 9
Pageable是Spring Data中用于实现分页的接口,它包含了分页相关的信息,如当前页码、每页显示的记录数、排序方式等等。
Pageable接口有两个常用的实现类:PageRequest和Sort。其中PageRequest是最常用的,它可以指定页码、每页显示的记录数和排序方式。
例如,要实现查询第2页、每页显示10条记录,并按照id降序排序的SQL语句,可以这样写:
```
Pageable pageable = PageRequest.of(1, 10, Sort.Direction.DESC, "id");
Page<User> users = userRepository.findAll(pageable);
```
其中,PageRequest.of(1, 10, Sort.Direction.DESC, "id")表示查询第2页,每页显示10条记录,按照id降序排序。而userRepository.findAll(pageable)则是使用这个分页信息进行查询,返回一个Page对象,其中包含了查询到的记录和分页相关的信息,如当前页码、总页数、总记录数等等。
在使用Pageable进行分页查询时,需要注意以下几点:
1. Pageable的页码从0开始,而不是从1开始。
2. PageRequest.of方法的第一个参数是页码,第二个参数是每页显示的记录数。
3. 可以通过Sort来指定排序方式,如果不需要排序可以传入null。
4. 查询结果会被封装成一个Page对象,可以通过Page的方法获取分页相关的信息。
相关问题
springboot分页查询pageable
在Spring Boot中,可以利用Pageable插件实现分页和查询。Pageable是Spring Data库中定义的一个接口,它抽象了与分页相关的所有信息,包括页码、每页大小等。通过Pageable接口,我们可以获取所有与分页相关的信息。
下面是一个示例代码,展示了如何在控制层中使用Pageable插件进行分页查询:
```java
// 分页
@RequestMapping("/findPage")
public String findByPage(Model model, Integer pageNum) {
// 当前页面为空时,赋值为一,代表当前为第一页
if (pageNum == null) {
pageNum = 1;
}
Pageable pageable = PageRequest.of(pageNum - 1, 5);
Page<List<Map>> page = serviceStudent.findPage(pageable);
model.addAttribute("pageInfo", page);
return "index";
}
```
在上述代码中,首先判断当前页码是否为空,如果为空则默认为第一页。然后使用PageRequest.of方法创建一个Pageable对象,指定页码和每页大小。接下来调用serviceStudent的findPage方法,传入Pageable对象进行分页查询。最后将查询结果存入model中,返回index页面。
为了在显示页面中实现首页、上一页、下一页和尾页等功能,返回值需要使用Page<List<?>>类型。这样可以将数据交给Page类处理并进行分页。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Spring Boot 利用Pageable插件实现分页和查询](https://blog.csdn.net/CSDN_java1005/article/details/106235082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
springboot实现分页查询
在 Spring Boot 中,可以使用 Spring Data JPA 实现分页查询。下面是一个简单的例子:
1. 首先,在 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
```
2. 创建一个实体类,例如 User:
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
// getters and setters
}
```
3. 创建一个 UserRepository 接口,继承 JpaRepository 接口:
```java
public interface UserRepository extends JpaRepository<User, Long> {
Page<User> findAll(Pageable pageable);
}
```
4. 在 Controller 中引入 UserRepository,并使用 Pageable 对象实现分页查询:
```java
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public Page<User> getUsers(@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
Pageable pageable = PageRequest.of(page, size);
return userRepository.findAll(pageable);
}
}
```
在上面的例子中,我们通过调用 UserRepository 的 findAll 方法,传入 Pageable 对象实现分页查询。在 getUsers 方法中,我们使用 @RequestParam 注解将 page 和 size 参数传递给 PageRequest.of 方法,创建一个 Pageable 对象。
这就是使用 Spring Boot 和 Spring Data JPA 实现分页查询的基本步骤。