SpringBoot(2.7.x)中使用PageHelper

如何在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. startPage( pageNum, pageSize )后执行的的第一个select语句进行分页。
  • 上面的这段代码会返回第一页的数据,如果要返回第n页的数据,可以使用PageHelper. startPage( n, 6 )。

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

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

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

这种情况下由于 param1 存在 null 的情况,就会导致 PageHelper 生产了一个分页参数,但是没有被消费,这个参数 就会一直保留在这个线程上。当这个线程再次被使用时,就可能导致不该分页的方法去消费这个分页参数,这就产生了莫名其妙的分页。

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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swagger 是一个接口文档生成工具,可以方便地生成 RESTful API 文档。在 Spring Boot 使用 Swagger 也非常简单,只需要添加对应的依赖,然后在配置文件进行简单的配置即可。 下面是在 Spring Boot 添加 Swagger 的步骤: 1. 在 pom.xml 文件添加 Swagger 的依赖: ``` <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> ``` 2. 在 Spring Boot 的启动类上添加 `@EnableSwagger2` 注解,启用 Swagger: ``` @SpringBootApplication @EnableSwagger2 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 3. 添加 Swagger 配置类,配置 Swagger 的基本信息: ``` @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.demo")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API 文档") .description("API 接口文档") .version("1.0.0") .build(); } } ``` 其,`@Bean` 注解的 `Docket` 对象是 Swagger 的主要配置对象,可以设置 API 的基本信息,如文档标题、版本号等。`apis` 方法和 `paths` 方法可以设置 API 的扫描范围,这里的示例是扫描 `com.example.demo` 包下的所有 API。 4. 启动应用程序,在浏览器访问 `http://localhost:8080/swagger-ui.html`,即可看到自动生成的 API 文档。 以上就是在 Spring Boot 使用 Swagger 的简单步骤,你还可以根据自己的需求进行更加详细的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值