文章目录
1 微风·壹:MyBatis中Controller层List集合接收数据,泛型添加与否
1.1 问题的再引入
引入:在前文微风·壹中我们探讨的问题
MyBatis中Controller层List集合接收数据,泛型添加与否?
,我们经过探讨得出:不能,理由:因为实体类只能生成唯一的对象。
同时实验了,不添加泛型时,会发生报错
1.2 问题的再分析
1.2.1 list接口的接口文档
一般增删改不需要返回值,查需要返回值。
注意:接口中的data返回值是必须的
1.2.2 后端统一返回结果类
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private T data; //数据
public static <T> Result<T> success() {
Result<T> result = new Result<T>();
result.code = 1;
return result;
}
public static <T> Result<T> success(T object) {
Result<T> result = new Result<T>();
result.data = object;
result.code = 1;
return result;
}
public static <T> Result<T> error(String msg) {
Result result = new Result();
result.msg = msg;
result.code = 0;
return result;
}
注意:所标注出的代码,在统一结果返回类中,
success(T object)方法,当data必须返回时,此时需要加上泛型。
1.2.3 controller中代码
对照1.2.2我们得出的结果,
list接口中,data必须返回,而统一结果返回类中,定义我们在成功返回data时,必须使用泛型,
因此,在我们得出不加泛型会报错的基础上,我们又得到这一佐证。
/**
* 根据分类id查询菜品
* @param categoryId
* @return
*/
@GetMapping("/list")
public Result<List<Dish>> list(Long categoryId) {
log.info("分类id:{}", categoryId);
List<Dish> dish= dishService.list(categoryId);
return Result.success(dish);
}
}
1.3 结论
list接口中,data必须返回,而统一结果返回类中,定义我们在成功返回data时,必须使用泛型,
因此,在我们得出不加泛型会报错的基础上,我们又得到这一佐证。
1.4 引申结论
那么,当我们在定义一个统一结果返回类时,能得到那些注意点?
- ①首先,在定义统一结果返回类是,有数据返回,且成功的,我们必须可以考虑加上泛型,以合理的阈来接收,减少程序内存占用。
- ②其次,只有响应状态的返回(成功||失败)时,我们考虑不加泛型。
- ③最后,再返回错误的响应结果即信息时,我们考虑不加泛型。