当前使用版本(必填,否则不予处理)

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-extension</artifactId>
    <version>3.5.5</version>
</dependency>

该问题是如何引起的?(确定最新版也有问题再提!!!)

这两个方法的正确行为应该是返回 boolean,但是这里返回了 Page,导致解析 Swagger OpenAPI 的时候引用了自己,造成死循环。

3.5.5有问题

public Page<T> setSearchCount(boolean searchCount) {
    this.searchCount = searchCount;
    return this;
}

public Page<T> setOptimizeCountSql(boolean optimizeCountSql) {
    this.optimizeCountSql = optimizeCountSql;
    return this;
}
optimizeCountSql:
  $ref: '#/components/schemas/PageDs'
searchCount:
  $ref: '#/components/schemas/PageDs'

3.5.4.1没问题:

@Deprecated
public boolean isOptimizeCountSql() {
    return this.optimizeCountSql;
}

@Deprecated
public boolean isSearchCount() {
    return this.searchCount;
}
optimizeCountSql:
  type: boolean
  deprecated: true
searchCount:
  type: boolean
  deprecated: true

重现步骤(如果有就写完整)

  1. 引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>3.2.3</version>
</dependency>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.3.0</version>
</dependency>
  1. Java 接口
@GetMapping("/configs")
public R<IPage<Config>> handleConfigs(Page<Config> page, Config config) {
    return R.ok(configService.findConfigs(page, config));
}
  1. 访问 /v3/api-docs.yaml 导出,观察两个版本 optimizeCountSql 和 searchCount 的差异。

报错信息

Caused by: java.lang.StackOverflowError: null
    at java.base/java.lang.String.equals(String.java:1834)
    at java.base/java.util.HashMap.putVal(HashMap.java:633)
    at java.base/java.util.HashMap.put(HashMap.java:610)