Java SpringBoot统一结果封装(接口+类)

1. 创建接口

public interface ResultCode {

    Integer SUCCESS = 20000;

    Integer ERROR = 20001;
}

2. 创建类

    //这块返回this做个说明,
        //谁调用返回谁,这是为了可以实现 链式编程
            //随后可以Result.ok().code(20000).data(...)

package com.atguigu.common_utils;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * @author KSJ
 * @version 1.0
 * @description: 统一返回结果
 * @date 2022/10/1 17:01
 */

@ApiModel(description="统一返回结果")
@Data
public class Result {

    @ApiModelProperty(value = "是否成功")
    private Boolean success;

    @ApiModelProperty(value = "返回码")
    private Integer code;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "返回数据")
    private Map<String, Object> data = new HashMap<String, Object>();

    //把构造方法私有
    private Result() {}

    //成功静态方法
    public static Result ok() {
        Result r = new Result();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS);
        r.setMessage("成功");
        return r;
    }

    //失败静态方法
    public static Result error() {
        Result r = new Result();
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR);
        r.setMessage("失败");
        return r;
    }

    //这块返回this做个说明,
        //谁调用返回谁,这是为了可以实现 链式编程
            //随后可以Result.ok().code(20000).data(...)
    public Result success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public Result message(String message){
        this.setMessage(message);
        return this;
    }

    public Result code(Integer code){
        this.setCode(code);
        return this;
    }

    public Result data(String key, Object value){
        this.data.put(key, value);
        return this;
    }

    public Result data(Map<String, Object> map){
        this.setData(map);
        return this;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
A:好的,下面是一个使用springboot、mybatis、swagger2、valid参数校验、图片上传、异常统一处理、返回体封装、vue构建相册项目的CRUD接口实现的代码示例。 1. 定义实体 ```java public class Album { private Long id; @NotBlank(message = "相册名称不能为空") private String name; @NotBlank(message = "相册描述不能为空") private String description; private String coverUrl; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime; // getter和setter省略... } ``` 2. 定义Mapper接口 ```java @Mapper public interface AlbumMapper { List<Album> findAll(); Album findById(Long id); int insert(Album album); int update(Album album); int deleteById(Long id); } ``` 3. 定义Service接口及实现 ```java public interface AlbumService { List<Album> findAll(); Album findById(Long id); void save(Album album); void update(Album album); void deleteById(Long id); } @Service public class AlbumServiceImpl implements AlbumService { @Autowired private AlbumMapper albumMapper; @Override public List<Album> findAll() { return albumMapper.findAll(); } @Override public Album findById(Long id) { return albumMapper.findById(id); } @Override public void save(@Valid Album album) { album.setCreateTime(new Date()); album.setUpdateTime(new Date()); albumMapper.insert(album); } @Override public void update(@Valid Album album) { album.setUpdateTime(new Date()); albumMapper.update(album); } @Override public void deleteById(Long id) { albumMapper.deleteById(id); } } ``` 4. 定义Controller接口 ```java @RestController @RequestMapping("/album") @Api(tags = "相册管理接口") public class AlbumController { @Autowired private AlbumService albumService; @GetMapping("/") @ApiOperation("查询所有相册") public Result findAll() { List<Album> albumList = albumService.findAll(); return Result.success(albumList); } @GetMapping("/{id}") @ApiOperation("查询相册详情") public Result findById(@PathVariable Long id) { Album album = albumService.findById(id); if (album != null) { return Result.success(album); } else { return Result.error(ResultCode.NOT_FOUND); } } @PostMapping("/") @ApiOperation("添加相册") public Result save(@Valid @RequestBody Album album) { albumService.save(album); return Result.success(); } @PutMapping("/{id}") @ApiOperation("更新相册") public Result update(@PathVariable Long id, @Valid @RequestBody Album album) { Album old = albumService.findById(id); if (old != null) { album.setId(id); albumService.update(album); return Result.success(); } else { return Result.error(ResultCode.NOT_FOUND); } } @DeleteMapping("/{id}") @ApiOperation("删除相册") public Result deleteById(@PathVariable Long id) { Album album = albumService.findById(id); if (album != null) { albumService.deleteById(id); return Result.success(); } else { return Result.error(ResultCode.NOT_FOUND); } } } ``` 5. 定义全局异常处理器 ```java @ControllerAdvice @ResponseBody public class GlobalExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) public Result handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { FieldError fieldError = e.getBindingResult().getFieldError(); String message = fieldError.getDefaultMessage(); return Result.error(ResultCode.INVALID_PARAMETER, message); } // other exception handler... } ``` 6. 完成以上步骤后,启动SpringBoot应用程序,然后使用SwaggerUI测试接口。同时,在前端项目中可以使用Vue框架实现前端展示及交互。 以上就是使用springboot、mybatis、swagger2、valid参数校验、图片上传、异常统一处理、返回体封装、vue构建相册项目的CRUD接口实现的一个简单示例,仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NEUMaple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值