springboot-3.2.1 集成 mybatis、分页插件pagehelper和接口文档swagger

本文介绍了SpringBoot3.2.1及以上版本在集成mybatis、pagehelper分页插件和Swagger在线文档时遇到的版本兼容问题,包括依赖版本选择、资源配置及控制器接口文档的更新,以帮助开发者解决这些问题。
摘要由CSDN通过智能技术生成

        springboot 3.+ 以上版本集成 mybatis、分页插件和 swagger 在线文档时会出现版本兼容问题,造成pagehelper无法自动分页,接口文档集成不成功问题。swagger在与springboot3.+版本整合也做了更新,以下版本亲测可用。 

一、 pom依赖

        springboot 3.2.1 使用 pagehelper需要使用 1.4.6,版本低于该版本时分页查询时,分页不起效果,使用2.+版本时则会抛出异常。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.1</version>
        <relativePath/>
    </parent>
  
    <properties>
        <java.version>17</java.version>
        <jackson.version>2.16.0</jackson.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>      
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.1.0</version>
        </dependency>       
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>
    </dependencies>

二、resources 配置文件

        集成swagger需要配置 mvc的 matching-strategy: ant_path_matcher,从springboot 2.6.+ 开始就需要配置,如果不使用swagger则忽略

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: {model-path}

springdoc:
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs
  group-configs:
    - group: 'default'
      paths-to-match: '/**'
      packages-to-scan: {package}
    #- group: 'pathsToExclude'
    #  paths-to-match: '/actuator'

knife4j:
  enable: true
  setting:
    language: zh_cn

pagehelper:
  #自动识别数据库方言
  auto-dialect: true
  #从方法参数中取值  
  support-methods-arguments: true
  #数据库方言
  #helper-dialect: postgresql
  #动态切换数据源
  auto-runtime-dialect: true
  #启用合理化,根据页数自动适配
  reasonable: true

三、swagger配置类

@Configuration
public class WebConfig {

    @Bean
    public OpenAPI springShopOpenAPI() {
        final Contact contact = new Contact();
        contact.setName("作者信息");
        return new OpenAPI()
                .info(new Info().title("application name").version("0.0.1-SNAPSHOT")
                        .description(" service description")
                        .contact(contact).license(new License().name("Apache 2.0")
                        .url("http://springdoc.org")))
                .externalDocs(new ExternalDocumentation()
                .description("external document description")
                .url("https://springshop.wiki.github.org/docs"));
    }

四、controller编写,接口文档注解

1.controller接口文档注解

        swagger 中的参数注解跟旧版本的写法差别也比较大

@RestController
@Tag(name = "消息查询")
@RequestMapping("/page")
public class PageController {

    @Resource
    private MessageService messageService;

    @Operation(summary = "消息记录")
    @GetMapping("/list")
    @Parameters({
        @Parameter(name = "pageOffset", required = true, example = "1"),
        @Parameter(name = "pageSize", required = true, example = "10")})
    public R list(String pageOffset, String pageSize) {
        return messageService.page(token, pageOffset, pageSize);
    }
}

2.service分页

        分页逻辑写在 mapper 查询之前,pagehelper插件会完成自动分页

@Service
public class MessageService  {

    @Resource
    private MessageMapper messageMapper;

    public R page(String pageOffset, String pageSize) {
        PageMethod.startPage(Integer.parseInt(pageOffset), Integer.parseInt(pageSize));
        List<Message> list = messageMapper.list();
        PageInfo<Message> info = new PageInfo<>(list);
        return R.success(info.getList(), info.getTotal());
    }
}

五、效果

        knife地址: localhost:8080/doc.html 

        swagger地址:localhost:8080/swagger-ui.html 

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值