我使用In运算符使用mysql获取数据。如果列表有值,那么我以正确的方式获取数据。例如,
SELECT * FROM featured_service_provider where user_id IN (1,2)
如果我从前端传递空,我将查询为
SELECT * FROM featured_service_provider where user_id IN ()
如何处理?如果列表为空,我需要从表中获取所有用户标识?这有可能吗?
答案 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
也可能值得一看