去掉参数中第一个“,”

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

但是后端,因为我的mybati是in查询,所以因为第一个是","。所以会导致系统报错。

下面提供三个解决方法:
方法一:

找前端,让前端改!!

方法二(修改mybatis):
XML 复制代码
<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,并在条件语句中使用它来构建查询条件。

方法三:
java 复制代码
    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()));
        }
  1. 如果 categoryIds 字符串以逗号开头,那么使用 substring(1) 方法去掉开头的逗号。这是因为在查询条件中,逗号前面不应该有任何字符。
  2. 使用 split(",") 方法将 categoryIds 字符串按逗号分隔成多个字符串,然后赋值给一个名为 categoryIdArr 的字符串数组。这个数组包含了多个类别 ID 字符串。
  3. 创建一个名为 categoryIdList 的空列表,用于存储将要查询的类别 ID。
  4. 遍历 categoryIdArr 数组中的每个字符串,在遍历过程中,使用 Long.parseLong() 方法将字符串解析成 Long 类型,并且使用 trim() 方法去除字符串两端的空格。然后,将解析后的 Long 类型值添加到 categoryIdList 列表中。
  5. 最后,当循环遍历完成后,categoryIdList 列表中包含了多个类别 ID 的 Long 类型值,这个列表就可以用于查询数据了。
相关推荐
sugar__salt6 天前
从零理解 LLM 流式输出:Vue3 + DeepSeek API 实战
前端·人工智能·状态模式·sse·流式输出
ttwuai6 天前
Go 后台接口 401/403 排查:JWT 过期、刷新请求和权限码怎么定位
开发语言·golang·状态模式
ji_shuke7 天前
Vue3 前端批量打印 PDF/图片踩坑记:跨域、合并打印、对话框闪退与按钮一直 loading
前端·pdf·状态模式·pdf打印
ttwuai7 天前
Go 后台富文本图片上传失败排查:前端限制、接口和存储目录要一起看
前端·golang·状态模式
从此以后自律7 天前
三大传参注解完整详解
状态模式
ttod_qzstudio8 天前
【软考设计模式】状态模式:状态驱动行为自动转换与代码填空精讲
设计模式·状态模式
折哥的程序人生 · 物流技术专研8 天前
Java 23 种设计模式:从踩坑到精通 | 番外:状态 vs 策略 —— if-else 消除的两条路,你走对了吗?
java·spring·状态模式·策略模式·java面试·java设计模式·从踩坑到精通
xiaotie10058 天前
给deerflow2.0增加模型Token 使用数量显示的功能
状态模式
前端H12 天前
微前端 v3 架构升级:从加载隔离到状态协同
前端·架构·状态模式
脑子运行超载14 天前
Java动态生成PDF文件
java·pdf·状态模式·文件上传下载