第三步:result类的编写,规范返回结果

Result 类是一个通用的封装类,用于统一表示API接口的响应结果。它通常包括响应的状态码、消息、数据等信息,帮助开发者更方便地处理和返回API的响应。

在utils中新建文件夹,下面新建result和code的文件

Result


/**
 * 与前端交互的数据结构
 *
 * @param <T> 携带数据的类型
 */
@Data
@AllArgsConstructor
public class Result<T> {
    private Integer code;   //状态码
    private String message; //返回信息

    private T data;         //返回数据


    public static <T> Result<T> success(String message, T data) {
        return new Result<>(ResultCode.SUCCESS, message, data);
    }

    public static <T> Result<T> error(int resultCode, String message) {
        return new Result<>(resultCode, message, null);
    }
}

@Data,@AllArgsConstructor

**`@Data` 和 `@AllArgsConstructor` 是 Lombok 库中的注解,用于简化 Java 类的编写。Lombok 是一个 Java 库,可以通过注解自动生成常用的代码,如构造函数、getters、setters、equals、hashCode、toString等。**

### `@Data`

- **功能**:
  - `@Data` 是一个综合性注解,结合了多个 Lombok 注解的功能。
  - 自动生成类的所有属性的 getter 和 setter 方法。
  - 自动生成 `toString()` 方法。
  - 自动生成 `equals()` 和 `hashCode()` 方法。
  - 自动生成一个包含所有属性的 `canEqual()` 方法。

- **适用场景**:
  - 当你需要为类中的所有字段生成常用方法时,使用 `@Data` 注解可以减少重复代码,提高开发效率。

#### 示例

```java
@Data
public class User {
    private String name;
    private int age;
}
```

上述代码会自动生成以下内容:
- `getName()`, `setName(String name)`
- `getAge()`, `setAge(int age)`
- `toString()`, `equals(Object o)`, `hashCode()`

### `@AllArgsConstructor`

- **功能**:
  - `@AllArgsConstructor` 自动生成一个包含所有字段的构造函数(all-args constructor)。该构造函数按照字段声明的顺序包含所有字段。

- **适用场景**:
  - 当你需要一个包含所有字段的构造函数来创建对象时,使用 `@AllArgsConstructor` 注解可以简化构造函数的编写。

#### 示例

```java
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}
```

上述代码会自动生成以下内容:
```java
public User(String name, int age) {
    this.name = name;
    this.age = age;
}
```

### 总结

- **`@Data`**:提供一个综合性的注解,自动生成常用方法,如 getter、setter、toString、equals、hashCode 等。适用于需要完整数据对象的场景。
- **`@AllArgsConstructor`**:自动生成一个包含所有字段的构造函数,方便对象的创建。

这两个注解可以显著减少样板代码,使代码更加简洁和易于维护。如果你的项目中使用了 Lombok,需要确保引入了相关依赖并正确配置 IDE 以支持注解的处理。

ResultCode


public class ResultCode {

    /**
     * 成功状态码
     */
    public static final int SUCCESS = 200;
    /**
     * 参数不正确
     */
    public static final int INCORRECT_PARAM = 401;
    /**
     * 失败状态码
     */
    public static final int ERROR = 500;
    /**
     * 未登录状态码
     */
    public static final int NO_LOGIN = 600;
    /**
     * 没有权限状态码
     */
    public static final int NO_AUTH = 700;
}

替换前文controller中admin和banner的返回类型

admin


@RestController
@RequestMapping("/admin")
@Api(tags = "管理员接口")
public class AdminController {

    private final AdminService adminService;

    @Autowired
    public AdminController(AdminService adminService) {
        this.adminService = adminService;
    }

    @ApiOperation(value = "根据ID查找管理员", notes = "根据ID查找管理员信息")
    @ApiResponses(value = {
            @ApiResponse(code = 200, message = "查找成功"),
            @ApiResponse(code = 404, message = "管理员未找到")
    })
    @GetMapping("/{id}")
    public Result<Admin> findById(@PathVariable int id) {
        Admin admin = adminService.findById(id);
        if (admin != null) {
            return Result.success("Admin found", admin);
        } else {
            return Result.error(ResultCode.ERROR, "Admin not found");
        }
    }

    @ApiOperation(value = "获取所有管理员", notes = "获取所有管理员列表")
    @GetMapping("/list")
    public Result<List<Admin>> findAll() {
        List<Admin> admins = adminService.findAll();
        return Result.success("Success", admins);
    }

    @ApiOperation(value = "保存新的管理员", notes = "保存新的管理员信息")
    @PostMapping("/save")
    public Result<Integer> save(@RequestBody Admin admin) {
        int result = adminService.insert(admin);
        return result > 0 ? Result.success("Admin saved", result) : Result.error(ResultCode.ERROR, "Failed to save admin");
    }

    @ApiOperation(value = "更新管理员信息", notes = "更新现有管理员的信息")
    @PutMapping("/update")
    public Result<Integer> update(@RequestBody Admin admin) {
        int result = adminService.update(admin);
        return result > 0 ? Result.success("Admin updated", result) : Result.error(ResultCode.ERROR, "Failed to update admin");
    }

    @ApiOperation(value = "删除管理员", notes = "根据ID删除管理员")
    @ApiResponses(value = {
            @ApiResponse(code = 200, message = "删除成功"),
            @ApiResponse(code = 404, message = "管理员未找到")
    })
    @DeleteMapping("/delete/{id}")
    public Result<Integer> delete(@PathVariable int id) {
        int result = adminService.delete(id);
        return result > 0 ? Result.success("Admin deleted", result) : Result.error(ResultCode.ERROR, "Failed to delete admin");
    }
}

banner


@Api(tags = "Banner Management", description = "Operations pertaining to banner management")
@RestController
@RequestMapping("/banners")
public class BannerController {

    @Autowired
    private BannerService bannerService;

    @ApiOperation(value = "Get all banners", notes = "Retrieve a list of all banners")
    @GetMapping
    public Result<List<Banner>> getAllBanners() {
        List<Banner> banners = bannerService.getAllBanners();
        return Result.success("Success", banners);
    }

    @ApiOperation(value = "Get banner by ID", notes = "Retrieve a banner by its ID")
    @GetMapping("/{id}")
    public Result<Banner> getBannerById(@ApiParam(value = "ID of the banner to retrieve", required = true) @PathVariable int id) {
        Banner banner = bannerService.getBannerById(id);
        if (banner != null) {
            return Result.success("Banner found", banner);
        } else {
            return Result.error(ResultCode.ERROR, "Banner not found");
        }
    }

    @ApiOperation(value = "Add a new banner", notes = "Add a new banner to the system")
    @PostMapping
    public Result<Integer> insertBanner(@ApiParam(value = "Banner object to be added", required = true) @RequestBody Banner banner) {
        int result = bannerService.insertBanner(banner);
        return result > 0 ? Result.success("Banner added", result) : Result.error(ResultCode.ERROR, "Failed to add banner");
    }

    @ApiOperation(value = "Update an existing banner", notes = "Update an existing banner by its ID")
    @PutMapping("/{id}")
    public Result<Integer> updateBanner(@ApiParam(value = "ID of the banner to update", required = true) @PathVariable int id,
                                        @ApiParam(value = "Updated banner object", required = true) @RequestBody Banner banner) {
        banner.setId(id);
        int result = bannerService.updateBanner(banner);
        return result > 0 ? Result.success("Banner updated", result) : Result.error(ResultCode.ERROR, "Failed to update banner");
    }

    @ApiOperation(value = "Delete a banner by ID", notes = "Delete a banner from the system by its ID")
    @DeleteMapping("/{id}")
    public Result<Integer> deleteBannerById(@ApiParam(value = "ID of the banner to delete", required = true) @PathVariable int id) {
        int result = bannerService.deleteBannerById(id);
        return result > 0 ? Result.success("Banner deleted", result) : Result.error(ResultCode.ERROR, "Failed to delete banner");
    }
}

验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值