Swagger-ui设置 统一返回值类型 分页功能 条件查询操作

时间:2024-10-12 11:49:32

                                                   Swagger-ui 的设置

@Api(description = "")   可以设置处的文字

@ApiOperation(value = "") 可以设置单个查询的标题名称

@ApiParam(name = "id",value = "讲师ID",readOnly = true)    可以设置  需要页面上传数据的输入框注释  输入内容,id在左边,value 在输入框的右边.


统一返回结果值

 创建一个maven 配置工程        根据项目需求定制统一返回值  需要的参数     一般定义 是否成功    返回码   返回消息   返回数据    

  1. package ;
  2. import ;
  3. import ;
  4. import ;
  5. import ;
  6. @Data
  7. public class R {
  8. @ApiModelProperty(value = "是否成功")
  9. private Boolean success;
  10. @ApiModelProperty(value = "返回码")
  11. private Integer code;
  12. @ApiModelProperty(value = "返回消息")
  13. private String message;
  14. @ApiModelProperty(value = "返回数据")
  15. private Map<String,Object> data=new HashMap<>();
  16. //私有的构造方法,让别人无法new 创建
  17. private R(){ };
  18. public static R ok(){
  19. R r = new R();
  20. (true);
  21. ();
  22. ("成功!");
  23. return r; }
  24. public static R error(){
  25. R r = new R();
  26. (false);
  27. ();
  28. ("失败!");
  29. return r;
  30. }
  31. //链式编程的方式,返回值是当前类的 构造对象 下面的几个方法,都是可以直接赋值给类中的某些属性.而后返回当前类,可以反复 添加
  32. public R success(Boolean success){
  33. this.setSuccess(success);
  34. return this;
  35. }
  36. public R message(String message){
  37. this.setMessage(message);
  38. return this;
  39. }
  40. public R code(Integer code){
  41. this.setCode(code);
  42. return this;
  43. }
  44. public R data(String key, Object value){
  45. this.(key, value);
  46. return this;
  47. }
  48. public R data(Map<String, Object> map){
  49. this.setData(map);
  50. return this;
  51. }
  52. }

此方法比较巧妙的地方是,使用了链式编程的方法,可以逐个参数赋值, 返回值类型不可new  可以给此类中的属性赋值,然后返回.  

如果返回多个数据   data可以直接创建单个的  key  value  的方式存入,当然也可以  先创建一个map  类  存入map  然后map 放入data中.

 



分页操作之前也做过,这里回顾一遍

首先  在config  配置类中  加入插件

  1. /* 分页查询*/
  2. @Bean
  3. public PaginationInterceptor paginationInterceptor(){
  4. return new PaginationInterceptor();
  5. }
  1. //3.分页查询的方法
  2. @ApiOperation(value = "分页查询/当前页/查询数量")
  3. @GetMapping("/pageTeacher/{current}/{limit}")
  4. public R pageListTeacher(@PathVariable Long current,@PathVariable Long limit){
  5. //创建一个page 对象
  6. Page<Teacher> page=new Page<>(current,limit);
  7. //调用方法
  8. (page, null);
  9. long total = ();
  10. List<Teacher> records = ();
  11. if(total!=0) {
  12. return ().data("msg", records).data("rows",total);
  13. }else {
  14. return ();
  15. }
  16. }

注意点:   在这个方法中加入@ApiParam(name = "id",value = "讲师ID",readOnly = true)   注解会导致long类型出错.

2:       page传入 (page, null);         不需要接受,page会获得   查询的List集合.

用(): 获取List集合数据


   条件查询操作         

 把可查询字段打包,写一个实体类.   查询语句前端返回一个类会方便很多,

注意: 要判断每个实体类中的各个类前端有无传参,  一般使用  spring自带的    方法  

建议在此使用post 作为提交方式,这样在 Swagger 上面操作体验更佳.

  1. @PostMapping("/condition/{current}/{limit}")
  2. public R condition(@PathVariable long current, @PathVariable long limit,@RequestBody Query query){
  3. Page<Teacher> page=new Page<>(current,limit);
  4. QueryWrapper<Teacher> qu=new QueryWrapper<>();
  5. String name = ();
  6. Integer level = ();
  7. String begin = ();
  8. String end = ();
  9. if(!(name)){
  10. ("name",name);
  11. }
  12. if(level!=null){
  13. ("level",level);
  14. }
  15. if(!(begin)){
  16. ("gmt_create",begin);
  17. }
  18. if(!(end)){
  19. ("gmt_modified",end);
  20. }
  21. (());
  22. (page,qu);
  23. List<Teacher> records = ();
  24. if(records!=null) {
  25. return ().data("msg", records);
  26. }else {
  27. return ();
  28. }
  29. }