我有2个日期框来制作过滤器。他们的价值将决定'来自'和'到'在我的查询中(我现在使用的是Oracle),这是代码。
@Listen("onClick=#btnSaveFilter")
public void saveFilter() throws Exception {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
c_main_filter.detach();
cc.refreshFilter(""
+"[Date of Birth] between '" + formatter.format(dbDateBirthFrom.getValue()).toString() + "' "
+ "and '" + formatter.format(dbDateBirthto.getValue()).toString() + "'");
}
当两个datebox都有值时,查询工作。但是当它们没有值时,查询没有提供任何数据。
当datebox有值时,它会提供数据
"[Registration Date] between '2010-09-23' and '2010-09-23' "
当datebox没有值时,它没有提供数据
"[Registration Date] between '' and '' "
像我想要的另一个过滤器,如果值是''那么所有的数据都会出现,但不是:D哈哈哈。条件实际上超过这个,过滤器有很多参数,其中一个就是这个条件,其中一些使用日期格式,所以会有更多这样的条件。
你知道如何优雅地解决这个问题,我一直在考虑使用'如果'确定日期框有值或没有然后我会将文本附加到查询文本,如果它们都有价值,但后来我发现另一个问题我如何添加'和'在查询中给出另一个条件,
假设我有5个条件,那么
"select * from xxxx where 1stcondition and 2ndcondition and
3rdcondition and 4thcondition and 5th condition"
所以当第5个条件的日期框没有值时,查询将会出错,如此
"select * from xxxx where 1stcondition and 2ndcondition and
3rdcondition and 4thcondition and"
如果我想使用'如果'我该如何使用'和'?但如果你有其他选择,那将是很好的因为我不必处理'如果' :D
答案 0 :(得分:1)
您可以使用$('#msg-modal').modal();
$scope.toggle=true;
来确定是否需要放置$('#msg-modal').modal('hide');
$scope.toggle=false;
:
String.isEmpty()
答案 1 :(得分:0)
我不知道您是否使用普通的JDBC或ORM框架(如hibernate)来查询数据库,但您可以尝试这样的事情:
public void saveFileter(){
StringBuilder sb = new StringBuilder();
sb.append("select * from table ");
if(dbDateBirthFrom.getValue() != null{
sb.append(determineFilterWord(sb.toString()));
sb.append("your condition ");
}
if(dbDateBirthTo.getValue() != null{
sb.append(determineFilterWord(sb.toString()));
sb.append("your condition ")
}
session.createQuery(sb.toString()); //if you using hibernate
}
private string determineFilterWord(String query){
if(query.toLowerCase().indexOf("where") != -1){
return "and ";
}else{
return "where ";
}
}