包
<!--引入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());
}
}