SpringBoot整合knife4j

SpringBoot整合knife4j

一、什么是knife4j

在日常开发中,写接口文档是我们必不可少的,而Knife4j就是一个接口文档工具,可以看作是Swagger的升级版,但是界面比Swagger更好看,功能更丰富

早期,swagger-boostrap-ui是1.x版本,如今swagger-bootsrap-ui到2.x,同时也更改名字Knife4j,适用于单体和微服务项目。

Knife4j官方网站:https://doc.xiaominfo.com/

二、整合knife4j

2.1 Knife4j配置

  1. 引入Knife4j相关依赖

    xml 复制代码
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
                <version>4.4.0</version>
            </dependency>
  2. 配置文件

    yml 复制代码
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/e-mart?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: root
    # springdoc-openapi项目配置
    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: com.bailuo.swagger.controller
    # knife4j的增强配置,不需要增强可以不配
    knife4j:
      enable: true
      setting:
        language: zh_cn
  3. 实体类

    java 复制代码
    package com.bailuo.swagger.entity;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
    
      private long id;
      private String loginName;
      private String userName;
      private String password;
      private long sex;
      private String identityCode;
      private String email;
      private String mobile;
      private long type;
    }
  4. 创建mapper

    java 复制代码
    package com.bailuo.swagger.mapper;
    
    import com.bailuo.swagger.entity.User;
    
    import java.util.List;
    
    public interface UserMapper {
        List<User> selectUserList();
        int insertUser(User user);
        int updateUser(User user);
        User selectUser(int userId);
        int deleteUser(int userId);
    }
    xml 复制代码
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.bailuo.swagger.mapper.UserMapper">
        <insert id="insertUser">
            insert into easybuy_user(mobile,loginName,userName,sex,identityCode,email,type,password)
            values(#{mobile},#{loginName},#{userName},#{sex},#{identityCode},#{email},#{type},#{password})
        </insert>
        <update id="updateUser">
            update easybuy_user set mobile=#{mobile},loginName=#{loginName},userName=#{userName},sex=#{sex},identityCode=#{identityCode},email=#{email},type=#{type},password=#{password} where id=#{id}
        </update>
        <delete id="deleteUser">
            delete from easybuy_user where id=#{userId}
        </delete>
    
        <select id="selectUserList" resultType="com.bailuo.swagger.entity.User">
            select * from easybuy_user
        </select>
        <select id="selectUser" resultType="com.bailuo.swagger.entity.User">
            select * from easybuy_user where id=#{userId}
        </select>
    </mapper>
  5. 创建controller

    java 复制代码
    package com.bailuo.swagger.controller;
    
    
    import com.bailuo.swagger.entity.User;
    import com.bailuo.swagger.service.UserService;
    import com.bailuo.swagger.vo.ResultData;
    import io.swagger.v3.oas.annotations.Operation;
    import io.swagger.v3.oas.annotations.tags.Tag;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/user")
    @Tag(name = "用户管理接口")
    public class UserController {
        @Autowired
        UserService userService;
        @Operation(summary = "查询所有用户")
        @GetMapping("/")
        public ResultData<List<User>> list(){
            List<User> users = userService.selectUserList();
            return ResultData.success(users);
        }
        @Operation(summary = "修改用户")
        @PutMapping("/")
        public ResultData<Integer> update(@RequestBody User user){
            int resultUpdate = userService.updateUser(user);
            return ResultData.success(resultUpdate);
        }
        @Operation(summary = "查询指定用户")
        @GetMapping("/{id}")
        public ResultData<User> selectById(@PathVariable("id") int id){
            User user = userService.selectUser(id);
            return ResultData.success(user);
        }
        @Operation(summary = "添加用户")
        @PostMapping("/")
        public ResultData<Integer> list(@RequestBody User user){
            int insertResult = userService.insertUser(user);
            return ResultData.success(insertResult);
        }
    }

2.2 效果

此时运行项目,访问 IP+端口/doc.html

例如:http://127.0.0.1:8080/doc.html

相关推荐
李小白66几秒前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp14 分钟前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
装不满的克莱因瓶44 分钟前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
n北斗1 小时前
常用类晨考day15
java
骇客野人1 小时前
【JAVA】JAVA接口公共返回体ResponseData封装
java·开发语言
yuanbenshidiaos2 小时前
c++---------数据类型
java·jvm·c++
向宇it2 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
Lojarro2 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
莫名其妙小饼干2 小时前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
isolusion3 小时前
Springboot的创建方式
java·spring boot·后端