0
点赞
收藏
分享

微信扫一扫

重新登录成功和登录失败处理器

kmoon_b426 2023-08-04 阅读 59

如何在SpringBoot中使用PageHelper

  1. 先添加依赖
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
</dependency>
  1. SpringBoot 2.6.x及以上版本要开启循环依赖(除非你的SpringBoot版本兼容PageHelper版本)
# 这些代码写在application.yml中。
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/learn_java?usessl=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
  main:
    allow-circular-references: true             
       
# 下面是PageHelper的配置
pagehelper:
  helper-dialect: mysql
  reasonable: false
  default-count: true
  1. 然后在自定义的控制器中进行测试:
@Autowired
private BookService bookService;

@GetMapping
public void selectAll(){
    PageHelper.startPage(1,6);  //第一个参数表示第几页,第二个参数表示每页含几条数据。
    List<Book> userList = bookService.selectAll();
    PageInfo pageInfo = new PageInfo(userList);
    System.out.println(pageInfo);
}

关于PageHelper的坑(官方文档中更详细)

如果你写出下面这样的代码,就是不安全的用法:

PageHelper.startPage(1, 10);
List<User> list;
if(param1 != null){
    list = userMapper.selectIf(param1);
} else {
    list = new ArrayList<User>();
}

上面这个代码,应该写成下面这个样子:

List<User> list;
if(param1 != null){
    PageHelper.startPage(1, 10);
    list = userMapper.selectIf(param1);
} else {
    list = new ArrayList<User>();
}

这种写法就能保证安全。
如果你对此不放心,你可以手动清理ThreadLocal存储的分页参数,可以像下面这样使用:

List<User> list;
if(param1 != null){
    PageHelper.startPage(1, 10);
    try{
        list = userMapper.selectAll();
    } finally {
        PageHelper.clearPage();
    }
} else {
    list = new ArrayList<User>();
}

这么写很不好看,而且没有必要。

举报

相关推荐

0 条评论