去掉参数中第一个“,”

简介: 去掉参数中第一个“,”

      记录一下,前端传参中,传给我参数是“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()));
        }
  1. 如果 categoryIds 字符串以逗号开头,那么使用 substring(1) 方法去掉开头的逗号。这是因为在查询条件中,逗号前面不应该有任何字符。
  2. 使用 split(",") 方法将 categoryIds 字符串按逗号分隔成多个字符串,然后赋值给一个名为 categoryIdArr 的字符串数组。这个数组包含了多个类别 ID 字符串。
  3. 创建一个名为 categoryIdList 的空列表,用于存储将要查询的类别 ID。
  4. 遍历 categoryIdArr 数组中的每个字符串,在遍历过程中,使用 Long.parseLong() 方法将字符串解析成 Long 类型,并且使用 trim() 方法去除字符串两端的空格。然后,将解析后的 Long 类型值添加到 categoryIdList 列表中。
  5. 最后,当循环遍历完成后,categoryIdList 列表中包含了多个类别 ID 的 Long 类型值,这个列表就可以用于查询数据了。
相关文章
|
安全 Java
安装burp2022 --illegal-access=permit
安装burp2022 --illegal-access=permit
260 0
|
存储 数据安全/隐私保护
Alist ——本地网盘管理器
Alist ——本地网盘管理器
19461 1
|
10月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
1094 6
|
11月前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
1103 148
|
Kubernetes 固态存储 调度
在K8S中,如何在指定节点上部署Pod呢?
在K8S中,如何在指定节点上部署Pod呢?
|
数据采集 人工智能 弹性计算
从零到英雄:利用百炼平台打造高效情感分析智能体的全攻略
百炼平台是阿里巴巴推出的面向开发者的AI模型训练和推理平台,提供丰富工具和服务,支持从需求分析到部署上线的全流程。本文以构建情感分析系统为例,详细介绍如何利用百炼平台完成数据准备、模型选择与训练、评估调优及最终部署。
1295 1
|
XML Java API
List与String相互转化方法汇总
本文汇总了List与String相互转化的多种方法,包括使用`String.join()`、`StringBuilder`、Java 8的Stream API、Apache Commons Lang3的`StringUtils.join()`以及Guava的`Joiner.on()`方法实现List转String;同时介绍了使用`split()`方法、正则表达式、Apache Commons Lang3的`StringUtils.split()`及Guava的`Splitter.on()`方法实现String转List。
1951 1
List与String相互转化方法汇总
|
搜索推荐 关系型数据库 MySQL
mysql like查询优化
通过合理的索引设计、使用全文索引、优化查询结构以及考虑分片和分区表,可以显著提高MySQL中 `LIKE`查询的性能。针对不同的应用场景选择合适的优化策略,能够有效地提升数据库查询效率,减少查询时间。希望这些方法和技巧能帮助您优化MySQL数据库中的模糊查询。
1281 4
|
运维 数据中心
计算巢资源组功能的最佳实践
计算巢简介计算巢是阿里云开放给ISV与其客户的服务管理PaaS平台,旨在解决ISV云上交付、部署、运维问题,建立ISV与客户之间的通道。针对ISV的实际场景,计算巢提供了私有化部署、托管版部署、代运维服务三种模式。托管版和私有化部署的区别是针对于部署在ISV的账号下还是部署在用户账号下。本文主要介绍计算巢不同场景下使用资源组功能的最佳实践。功能介绍资源组能够对用户拥有的云资源从用途、权限、归属等维
783 0
计算巢资源组功能的最佳实践
|
SQL Java 数据库连接
Mybatis拦截器实现带参数SQL语句打印
Mybatis拦截器实现带参数SQL语句打印