下面是详细讲解"springboot实现分页功能的完整代码"的攻略。
1. 引入依赖
Spring Boot 提供了对分页的支持,需要引入相关依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
2. 配置数据源和 JPA
在 application.properties
文件中配置数据源和 JPA:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
3. 创建实体类和DAO对象
创建一个包含分页参数pageNum
和pageSize
、以及结果集list
的对象:
public class Page<T> {
private int pageNum;
private int pageSize;
private List<T> list;
// 其他getter和setter方法
}
同时,创建需要实现JPA接口的实体类,并创建对应的DAO对象:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
private Integer age;
// 其他getter和setter方法
}
@Repository
public interface UserDao extends JpaRepository<User, Integer> {
}
4. 实现分页功能
在 UserDao
接口中定义分页查询方法:
@Query(value = "select * from user u where u.name like %?1% order by u.id desc",
countQuery = "select count(*) from user u where u.name like %?1%", nativeQuery = true)
Page<User> findByNameLike(String name, Pageable pageable);
在业务逻辑中调用该方法,并将结果封装到Page
对象中:
@Service
public class UserService {
@Autowired
private UserDao userDao;
public Page<User> findUserByName(String name, int pageNum, int pageSize) {
// 构建分页对象
Pageable pageable = PageRequest.of(pageNum - 1, pageSize, Sort.Direction.DESC, "id");
// 执行分页查询
Page<User> users = userDao.findByNameLike(name, pageable);
// 封装到Page对象中
Page<User> page = new Page<>();
page.setList(users.getContent());
page.setPageNum(users.getNumber() + 1);
page.setPageSize(users.getSize());
return page;
}
}
示例1:查询指定页码的数据
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users/{name}/{pageNum}/{pageSize}")
public Page<User> findUserByName(@PathVariable String name, @PathVariable int pageNum, @PathVariable int pageSize) {
return userService.findUserByName(name, pageNum, pageSize);
}
}
示例中使用 Get 请求接收参数 name
、pageNum
和pageSize
,并调用 findUserByName
方法执行分页查询。
示例2:查询所有数据
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public Page<User> findUserByName() {
return userService.findUserByName("", 1, Integer.MAX_VALUE);
}
}
示例中通过 Get 请求查询所有数据,并将 pageSize
参数设置为 Integer.MAX_VALUE
以保证查询到所有数据。
以上就是Spring Boot实现分页功能的完整代码攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot实现分页功能的完整代码 - Python技术站