下面是在Spring Boot中使用Spring-data-jpa实现分页查询的完整攻略。
步骤一:添加依赖
在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
步骤二:配置数据源
在application.properties
文件中添加以下配置:
spring.datasource.url=jdbc:mysql://localhost:3306/example_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
步骤三:创建实体类
创建一个实体类User
,代码如下:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
// getters and setters
}
步骤四:创建Repository
创建一个RepositoryUserRepository
,代码如下:
public interface UserRepository extends JpaRepository<User, Long> {
}
步骤五:实现分页查询
在Controller中注入UserRepository,通过调用findAll(Pageable pageable)方法实现分页查询:
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public List<User> getUsers(@RequestParam(defaultValue = "0") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(defaultValue = "id") String sortBy) {
Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by(sortBy));
Page<User> result = userRepository.findAll(pageable);
return result.getContent();
}
}
其中,PageRequest.of()方法用于创建一个Pageable对象,方法参数依次为:当前页码、每页显示数量、排序规则。
示例一:基础分页查询
访问/users?pageNo=0&pageSize=3&sortBy=id
,表示查询第一页,每页显示3条记录,按照ID升序排序。
[
{
"id": 1,
"name": "张三",
"age": 18
},
{
"id": 2,
"name": "李四",
"age": 20
},
{
"id": 3,
"name": "王五",
"age": 22
}
]
示例二:分页查询加条件筛选
在UserRepository
中添加方法findByNameContaining(String name, Pageable pageable)
,用于根据姓名模糊查询用户:
public interface UserRepository extends JpaRepository<User, Long> {
Page<User> findByNameContaining(String name, Pageable pageable);
}
在UserController
中添加方法getUsersByName()
,代码如下:
@GetMapping("/usersByName")
public List<User> getUsersByName(@RequestParam(defaultValue = "0") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam("name") String name) {
Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by("id").ascending());
Page<User> result = userRepository.findByNameContaining(name, pageable);
return result.getContent();
}
访问/usersByName?name=张&pageNo=0&pageSize=3
,表示查询姓名带有“张”字的用户,第一页,每页显示3条记录。
[
{
"id": 1,
"name": "张三",
"age": 18
},
{
"id": 4,
"name": "张飞",
"age": 25
},
{
"id": 6,
"name": "张无忌",
"age": 30
}
]
至此,就完成了在Spring Boot中使用Spring-data-jpa实现分页查询的攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Spring Boot中使用Spring-data-jpa实现分页查询 - Python技术站