使用springboot + mybatis + swagger2 + valid参数校验 + 图片上传 + 异常统一处理 + 返回体封装 + vue 构建相册项目,写一个CRUD的接口
时间: 2023-05-25 13:01:47 浏览: 260
基于SpringBoot+Mybatis实现SpringMVCWeb项目
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接口实现的一个简单示例,仅供参考。
阅读全文