请写一个分页查询同时能缓存的controller语句
时间: 2024-03-17 09:44:46 浏览: 17
以下是一个基于Spring MVC的分页查询同时能缓存的Controller语句示例:
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
@Cacheable(value = "users", key = "#page+'-'+#size")
public ResponseEntity<Page<User>> getUsers(@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
Pageable pageable = PageRequest.of(page, size);
Page<User> users = userService.getUsers(pageable);
return ResponseEntity.ok(users);
}
}
```
在这个示例中,我们创建了一个`UserController`类,并且使用了Spring注解`@RestController`和`@RequestMapping`来定义路由。我们注入了一个`UserService`实例,并在`getUsers`方法中使用了`@GetMapping`注解来定义HTTP GET请求的路由。我们还使用了`@Cacheable`注解来启用缓存,以便提高性能。
在`getUsers`方法中,我们使用`@RequestParam`注解来接收分页查询的参数。我们使用`PageRequest`类来创建`Pageable`对象,并将其传递给`userService.getUsers()`方法。我们还使用`ResponseEntity`来包装返回的`Page<User>`对象,并将其作为HTTP响应返回。
在`@Cacheable`注解中,我们指定了缓存的名称为`users`,并使用`#page+'-'+#size`作为缓存的键。这表示当使用相同的分页参数进行查询时,将从缓存中返回结果,而不是再次执行查询。
请注意,缓存的实现可能因您所使用的缓存框架而异。在这个示例中,我们使用了Spring自带的缓存框架,但您也可以使用其他框架,例如Ehcache或Redis。