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

文章讨论了在MyBatis的Controller层中,使用List集合接收数据时是否需要添加泛型的问题。通过分析list接口的接口文档和后端统一返回结果类,指出在返回数据时必须使用泛型以避免报错。结论强调了在定义返回类时,根据数据返回情况合理使用泛型,以优化内存占用和错误处理。
摘要由CSDN通过智能技术生成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值