在mysql IN运算符

时间:2018-04-03 14:27:10

标签: java mysql

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

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

如果我从前端传递空,我将查询为

SELECT * FROM featured_service_provider where user_id IN ()

如何处理?如果列表为空,我需要从表中获取所有用户标识?这有可能吗?

1 个答案:

答案 0 :(得分:1)

使整个where子句可选。

使用StringBuilder创建查询的默认部分SELECT * FROM featured_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也可能值得一看