根据的是id删除的,怎么用String类型接收呢?

这个项目也是我学习的一个项目,它是用id来删除的,但是接收id后,是用的String类型,不知道这样是为何呢?

@ApiOperation("删除收藏")
    @GetMapping(value = "/delete")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userId",value = "用户Id",dataType = "int"),
            @ApiImplicitParam(name = "songId",value = "歌曲Id",dataType = "int")
    })
    public Object deleteCollect(HttpServletRequest request){
        String userId = request.getParameter("userId");           //用户id
        String songId = request.getParameter("songId");           //歌曲id
        boolean flag = CollectService.deleteByUserIdSongId(Integer.parseInt(userId),Integer.parseInt(songId));
        return flag;
    }

它那样,不如直接用int接收,也不用在里面用Integer.paarseInt来取值了吧?

用整型也是可以的,看个人喜好了,比如分页查询时传的页码page以及分页大小pageSize这种明确是整型数字的一般会用Integer
你列出的用户id和歌曲id这种id字段,一般来说不会是纯整型,随机字符串(包含字母)的情况更常见,所以在实际开发中用String做为id字段类型更合理。

数据传输一般都是用字符串,这样操作多样,方便处理。在数据量很大的时候,主键id字段一般都是用String类型,可以用uuid自动生成,保证唯一及应对大数据量情况

通过request接收参数值的话,都是字符串类型。
request.getParameter()返回值类型就是字符串。

所以当你的业务是其他类型时,就需要间接转换。
后期用到框架的话,会做自动映射的。用实体类等其他类型来直接接收参数。

其实可以直接用@RequestParam Integer userId来接收参数,这样就不需要转换了

int取值范围太小

数据传输的时候,有些时候字符串类型要比int类型操作起来要方便

1、数据传输一般都是用字符串,也可以使用int ,看个人习惯。只要id中不包含字符,用integer也可以。
2、如果使用String,你截图的代码中需要对两个ID进行判空,不然运行时,在Integer.parseInt(userId)这一步可能会报错。