我正在使用 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/