记录一下,前端传参中,传给我参数是“categoryIds: ,1731557494586241026,1731569816263311362,1731569855534579713,1731858335179223042,1731858366821052418”

       但是后端,因为我的mybati是in查询,所以因为第一个是“,”。所以会导致系统报错。
  
下面提供三个解决方法:
方法一:
找前端,让前端改!!
方法二(修改mybatis):
<if test="pd.categoryIds != null and pd.categoryIds.trim() != ''">
    <choose>
        <when test="pd.categoryIds.startsWith(',')">
            <bind name="categoryIds" value="pd.categoryIds.substring(1)" />
        </when>
        <otherwise>
            <bind name="categoryIds" value="pd.categoryIds" />
        </otherwise>
    </choose>
    AND a.category_id IN (${categoryIds})
</if> 
      在这个改进后的条件语句中,我们首先使用 trim() 方法去除 categoryIds 字符串两端的空格。然后使用 startsWith(',') 方法判断是否以逗号开头,如果是则使用 substring(1) 方法去除开头的逗号。最后,我们将处理后的 categoryIds 值赋给一个新的变量 categoryIds,并在条件语句中使用它来构建查询条件。
方法三:
    if (categoryIds.startsWith(",")) {
            categoryIds = categoryIds.substring(1);
        }
        String[] categoryIdArr = categoryIds.split(",");
        List<Long> categoryIdList = new ArrayList<>();
        for (String categoryId : categoryIdArr) {
            categoryIdList.add(Long.parseLong(categoryId.trim()));
        } 
- 如果 
categoryIds字符串以逗号开头,那么使用substring(1)方法去掉开头的逗号。这是因为在查询条件中,逗号前面不应该有任何字符。 - 使用 
split(",")方法将categoryIds字符串按逗号分隔成多个字符串,然后赋值给一个名为categoryIdArr的字符串数组。这个数组包含了多个类别 ID 字符串。 - 创建一个名为 
categoryIdList的空列表,用于存储将要查询的类别 ID。 - 遍历 
categoryIdArr数组中的每个字符串,在遍历过程中,使用Long.parseLong()方法将字符串解析成Long类型,并且使用trim()方法去除字符串两端的空格。然后,将解析后的Long类型值添加到categoryIdList列表中。 - 最后,当循环遍历完成后,
categoryIdList列表中包含了多个类别 ID 的Long类型值,这个列表就可以用于查询数据了。 





![[跑代码-遇到问题-报错3]BK-SDM. KeyError: ‘up_blocks.0‘](https://img-blog.csdnimg.cn/direct/4d6f9d4758ff48ee90508e40273c4e08.png)












