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");
}
}