Knife4j-swagger2配置使用@api注解扫描Controller类接口

 <!--引入Knife4j的官方start包,该指南选择Spring Boot版本<3.0,开发者需要注意-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>

配置

package com.zz.mongo.config;

import io.swagger.annotations.Api;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

    @Bean(value = "dockerBean")
    public Docket dockerBean() {
        //指定使用Swagger2规范
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                //描述字段支持Markdown语法
                .description("# Knife4j RESTful APIs")
                .termsOfServiceUrl("https://doc.xiaominfo.com/")
                .contact("xiaoymin@foxmail.com")
                .version("1.0")
                .build())
                //分组名称
                .groupName("用户服务")
                .select()
                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//                .apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}

Bean类

package com.zz.mongo.controller;
 
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
 
import java.io.Serializable;
 
/**
 * <p>
 * 书本信息表
 * </p>
 *
 * @author 云村小威
 * @since 2023-12-20
 */
@Data
@Accessors(chain = true)
@ApiModel("书籍对象")
public class Book implements Serializable {
 
    private static final long serialVersionUID = 1L;
 
    /**
     * 书本编号
     */
    @ApiModelProperty("书籍编号")
    private String id;
 
    /**
     * 书本名称
     */
    @ApiModelProperty("书籍名称")
    private String bookname;
 
    /**
     * 书本价格
     */
    @ApiModelProperty("书籍价格")
    private Float price;
 
    /**
     * 书本类型
     */
    @ApiModelProperty("书籍类型")
    private String booktype;
 
 
 
}

接口类:

package com.ycxw.boot.controller;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycxw.boot.entity.Book;
import com.ycxw.boot.service.IBookService;
import com.ycxw.boot.tools.JsonResponseBody;
import com.ycxw.boot.tools.JsonResponseStatus;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
import java.util.Objects;
 
/**
 * <p>
 * 书本信息表 前端控制器
 * </p>
 *
 * @author 云村小威
 * @since 2023-12-20
 */
@RestController
@RequestMapping("/book")
@Api(value = "书籍管理")
public class BookController {
 
    @Autowired
    private IBookService bookService;
 

	@ApiOperation(value = "Get list of Students in the System ", response = Iterable.class, tags = "getStudents")
	    @ApiResponses(value = {
	            @ApiResponse(code = 200, message = "Success|OK"),
	            @ApiResponse(code = 401, message = "not authorized!"),
	            @ApiResponse(code = 403, message = "forbidden!!!"),
	            @ApiResponse(code = 404, message = "not found!!!") })
    @RequestMapping(value = "/getStudents")
    public Object getStudents() {
        return 11;
    }


    @GetMapping("/list")
    @ApiOperation(value = "书籍查询所有")
    public JsonResponseBody<List<Book>> list() {
        List<Book> list = bookService.list();
        if (!list.isEmpty()) {
            return JsonResponseBody.other(JsonResponseStatus.OK);
        } else {
            return JsonResponseBody.other(JsonResponseStatus.RESULT_EMPTY);
        }
    }
 
    @PostMapping("/save")
    @ApiOperation(value = "新增书籍")
    public JsonResponseBody<Boolean> save(Book book) {
        boolean save = bookService.save(book);
        return JsonResponseBody.success(save);
    }
 
    @GetMapping("/likeName")
    @ApiOperation(value = "获取商品集合,模糊查询")
    public JsonResponseBody<List<Book>> list(Book goods) {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.like(StringUtils.isNotEmpty(goods.getBookname()), "bookname", goods.getBookname());
        List<Book> list = bookService.list(wrapper);
        return JsonResponseBody.success(list);
    }
 
    @GetMapping("/show")
    @ApiOperation(value = "获取商品集合,模糊查询+大于查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "price", paramType = "query", value = "价格", required = true),
            @ApiImplicitParam(name = "bookname", paramType = "query", value = "名称", required = true)
    })
    public JsonResponseBody<List<Book>> listByNameAndPrice(Double price, String bookname) {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.like(StringUtils.isNotEmpty(bookname), "bookname", bookname);
        wrapper.gt(Objects.nonNull(price), "price", price);
        List<Book> list = bookService.list(wrapper);
        return JsonResponseBody.success(list);
    }
 
    @GetMapping("/page")
    @ApiOperation(value = "获取商品集合,分页查询+模糊查询")
    public JsonResponseBody<List<Book>> listPage(
            @ApiParam(name = "bookname", value = "模糊查询关键字")
            @RequestParam("bookname")
            String bookname
    ) {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.like(StringUtils.isNotEmpty(bookname), "bookname", bookname);
        Page<Book> page = new Page<>();
        Page<Book> res = bookService.page(page, wrapper);
        return JsonResponseBody.success(res.getRecords(), res.getTotal());
    }
 
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值