分页查询的controller,service,impl和Mapper层代码
时间: 2024-12-10 10:33:59 浏览: 15
Java一键生成代码到controller层【源码】
5星 · 资源好评率100%
分页查询通常是在Web应用中常见的操作,涉及到Controller、Service、Impl以及Mapper四个层次的代码设计。下面是一个简化的例子:
**Controller层(Controller.java or UserController.java):**
```java
@RestController
@RequestMapping("/api/v1/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{page}/{size}")
public ResponseEntity<List<User>> getUsersByPage(@PathVariable int page, @PathVariable int size) {
Pageable pageable = PageRequest.of(page, size);
Page<User> users = userService.getUsers(pageable);
return new ResponseEntity<>(users, HttpStatus.OK);
}
}
```
在这个例子中,`getUsersByPage`方法接收页码和每页大小作为路径变量,并通过`userService`调用服务层获取数据。
**Service层(UserService.java or UserServiceImpl.java):**
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public Page<User> getUsers(Pageable pageable) {
return userRepository.findAll(pageable);
}
}
```
这里,`userRepository`是一个接口(UserRepository.java),通常由Spring Data JPA或MyBatis等持久层框架提供。
**Impl层(UserRepositoryImpl.java 或具体的UserDao.java):**
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// 如果使用JPA,通常会有一个默认的findAll方法处理分页
}
// 或者如果使用MyBatis,Mapper层可能会像这样:
@Mapper
public interface UserRepositoryMapper {
List<User> getUsers(int pageNum, int pageSize);
}
```
Mapper接口或类包含具体的SQL查询,如`getUsers(pageNum, pageSize)`,用于从数据库读取用户数据。
**Mapper层(Mapper.xml或注解文件):**
```xml
<!-- 使用MyBatis -->
<select id="getUsers" resultType="User">
SELECT * FROM users LIMIT #{pageNum}, #{pageSize}
</select>
```
或者使用注解如`@Select`。
阅读全文