java - 在 mysql IN 运算符中获取空列表

标签 java mysql

我正在使用 In 运算符使用 mysql 获取数据。如果列表有值(value),那么我将以正确的方式获取数据。例如,

SELECT * FROM featured_service_provider where user_id IN (1,2)

如果我从前端传递空,我得到的查询为,

SELECT * FROM featured_service_provider where user_id IN ()

我该如何处理这个问题?如果列表为空,我需要从表中获取所有用户ID?这可能吗?

最佳答案

将整个 where 子句设为可选。

使用StringBuilder创建查询的默认部分,即SELECT * FROMfeatured_service_provider。然后根据需要添加 where 子句:

StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM featured_service_provider");
if(list.size > 0) {
    sb.append("where user_id IN (:list)");
}

我不确定您最终如何创建查询,但您需要将 :list 替换为以逗号分隔的值列表。

如果您使用 Hibernate,那么 Criteria 可能也值得一看

关于java - 在 mysql IN 运算符中获取空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632565/

相关文章:

java - 使用 SuperDevMode 的打印堆栈跟踪被混淆了

php - CakePHP:如何安全地删除数据库列

mysql - 将数据库中的两个字符串连接在一起

Java - Mysql异常不是unicode

java - 记录可用/必需的 Java 属性文件内容的最佳实践

java - 托管 bean 属性值未设置为 null

java - 顺序读取文件时出现 NumberFormatException?

java - 如何从返回字符串的方法终止

mysql - 跟踪数据访问

php - 如何在 PHP 中执行多个 MySQL 插入