Java sql where子句等于true
这里的Java sql where子句等于true,java,where-clause,Java,Where Clause,这里的,其中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= :colorPara
,其中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);
}
}
我这里的问题是,当用户从下拉列表中选择“全部”时,我想从数据库中选择所有颜色(所有记录),这就是为什么在第一部分我设置了,其中a1.status=true
,因为我希望它返回所有结果,但最终返回错误
在日志中,错误消息为:
尚未设置所有命名参数:[颜色]
我想澄清的是//second part code正在工作,只是当从下拉列表中选择all时,它无法显示任何内容,因为我的数据库没有颜色列的“all”。仅在需要筛选时添加WHERE语句:
Public List<ConclusionBO> getConclusion(String color){
StringBuilder sql = new StringBuilder();
sql.append("select something");
//More statement
if(transactionStatus.equals("all")) {
// do nothing
}else {
sql.append("where a1.color= :colorParam");
query.setParameter("colorParam", color);
}
}
Public List getconsultion(字符串颜色){
StringBuilder sql=新的StringBuilder();
append(“选择某物”);
//更多声明
if(交易状态等于(“全部”)){
//无所事事
}否则{
append(“其中a1.color=:colorParam”);
query.setParameter(“colorParam”,color);
}
}
此解决方法可能有效
Public List getconsultion(字符串颜色){
StringBuilder sql=新的StringBuilder();
append(“选择某物”);
//更多声明
如果(!“all”.equals(交易状态)){
append(“其中a1.color=:colorParam”);
query.setParameter(“colorParam”,color);
}
}
使用此选项,您只需在有筛选依据时添加where子句,如果所选选项为“全部”,则只需选择每种颜色。您的颜色列接受字符串。不能向其传递布尔值。 我认为你有两个选择: 为何时追加此项添加条件:
sql.append("where a1.color= :colorParam");
差不多
if(condition for when only one color is neeed)) {
sql.append("where a1.color= :colorParam");
}
不需要其他选项,因为当您不想筛选结果时,可选择“全部”
或
您可以从以下位置更改查询:
sql.append("where a1.color= :colorParam");
像这样的事情
sql.append("where a1.color IN (:colorParam)");
现在,您可以提供颜色列表,而不是一种颜色。
当您想要返回所有颜色时,您只需要向查询提供所有颜色
String allcolors = 'Red, Green, Blue, etc' /* hardcode all your colors here or better yet, dynamically populate them */
if(transactionStatus.equals("all")) {
query.setParameter("colorParam", allcolors);
}else {
query.setParameter("colorParam", color);
}
sql.append("where a1.color IN (:colorParam)");
String allcolors = 'Red, Green, Blue, etc' /* hardcode all your colors here or better yet, dynamically populate them */
if(transactionStatus.equals("all")) {
query.setParameter("colorParam", allcolors);
}else {
query.setParameter("colorParam", color);
}