和风·叁:后端接收前端传参,返回值泛型review;

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 引申结论

那么,当我们在定义一个统一结果返回类时,能得到那些注意点?

  • ①首先,在定义统一结果返回类是,有数据返回,且成功的,我们必须可以考虑加上泛型,以合理的阈来接收,减少程序内存占用。
  • ②其次,只有响应状态的返回(成功||失败)时,我们考虑不加泛型。
  • ③最后,再返回错误的响应结果即信息时,我们考虑不加泛型。

猜你喜欢

转载自blog.csdn.net/stange1/article/details/129503857