java - sql where 子句等于 true

标签 java where-clause

这里 where a1.color= true 在 java 中不起作用。当我在下拉列表中选择任何颜色时,出现错误。

 //fist part
Public List<ConclusionBO> getConclusion(String color){
    StringBuilder sql = new StringBuilder();
    sql.append("select something");
    sql.append("where a1.color= :colorParam");
    //More statement
    if(transactionStatus.equals("all")) {
        query.setParameter("colorParam", true); 
    }else {
        query.setParameter("colorParam", color); 
    }
}

当我这样做时,下面的代码对于我从下拉列表中选择的任何颜色都适用。但是当从下拉列表中选择全部时,它没有显示任何结果(当然,因为我的数据库没有列颜色的值“all”)

//second part
sql.append("select something");
sql.append("where a1.color= :colorParam");
//More statement
query.setParameter("colorParam", color);

我的问题是,当用户从下拉列表中选择“全部”时,我想从数据库中选择所有颜色(所有记录),这就是为什么在第一部分我设置 where a1.status = true,因为我希望它返回所有结果,但最终返回错误。

日志中的错误消息是:

Not all named parameters have been set: [color]

我想澄清一下,//第二部分代码正在工作,只是当从下拉列表中选择全部时,它无法显示任何内容,因为我的数据库没有“全部”颜色列。

最佳答案

此解决方法可能有效

Public List<ConclusionBO> getConclusion(String color){
    StringBuilder sql = new StringBuilder();
    sql.append("select something");
    //More statement
    if(!"all".equals(transactionStatus)) {
        sql.append("where a1.color= :colorParam");
        query.setParameter("colorParam", color); 
    } 
}

有了这个,您只需在需要过滤的内容时添加 where 子句,并且如果所选选项是全部,您只需选择每种颜色。

关于java - sql where 子句等于 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61209195/

相关文章:

php - 比较单独表中的 2 列移动和仅移动非重复项

java - 如何使用-cp在Unix上编译Java

java - 将数据类型从 DB 类型转换为 java 数据类型

java - JTable:定义带有可单击单元格的嵌套表格

使用 Select 或Where 的 C# 谓词不起作用

mysql - 我可以在 Where 子句中使用 "virtual column"吗?

java - 根据验证结果设置不同的http状态码

java - Maven War 插件 Websphere

mysql - 加入和条件

MySQL 执行时间过长