1、service层
(1)接口
public interface CatalogService {
CommonResponse<List<Category>> getCategoryList();
}
(2)实现
@Service("catalogService")
public class CatalogServiceImpl implements CatalogService {
@Autowired
private CategoryMapper categoryMapper;
@Override
public CommonResponse<List<Category>> getCategoryList() {
List<Category> categoryList = categoryMapper.selectList(null);
if(categoryList.isEmpty()){
return CommonResponse.createForSuccessMessage("没有分类信息");
}
return CommonResponse.createForSuccess(categoryList);
}
}
2、controller层
@Controller
@RequestMapping("/catalog/")
public class CatalogController {
@Autowired
private CatalogService catalogService;
@GetMapping("categories")
@ResponseBody
public CommonResponse<List<Category>> getCategoryList(){
return catalogService.getCategoryList();
}
}
3、运行后到网页中查看,利用JSON格式化工具,可以看到,除了返回了status、查询的结果,还返回了msg和success,没有意义,所以说要进行修改
(因为JSON会去找响应类当中所有的public并且是非静态的方法,构造方法除外,把这些值都序列化成对象返回)
4、回到通用响应类中
(1)在方法上加上@JsonIgnore,使得数据不会被序列化后返回
@JsonIgnore
public boolean isSuccess(){
return this.status == ResponseCode.SUCCESS.getCode();
}
(2)在类上打上注解,使那些值为空的属性不会被返回
@Getter
//JSON序列化时,空的数据不会被包含进去
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CommonResponse<T> implements Serializable
5、结果:
这样就算完成啦
再来一个样例:
1、controller
@GetMapping("categories/{id}")
@ResponseBody
public CommonResponse<Category> getCategory(@PathVariable("id") String categoryId){
return null;
}
2、service
(1)接口
CommonResponse<Category> getCategory(String categoryId);
(2)实现
@Override
public CommonResponse<Category> getCategory(String categoryId) {
Category category = categoryMapper.selectById(categoryId);
if(category == null){
return CommonResponse.createForSuccessMessage("没有该ID的Category");
}
return CommonResponse.createForSuccess(category);
}
3、再回到controller,修改返回值
@GetMapping("categories/{id}")
@ResponseBody
public CommonResponse<Category> getCategory(@PathVariable("id") String categoryId){
return catalogService.getCategory(categoryId);
}
4、运行后在Postman中查看
(1)数据库中有DOGS类
(2)数据库中没有DOG类