如果WHERE子句的参数为null,则尝试基于参数形成查询。如果我在if和else上做这个似乎是一个巨大的代码。还有其他聪明的方法吗?
示例:
String query = "SELECT CUSTOMER_NAME FROM CUSTOMER_TABLE WHERE ";
if(cust_id !=null && !(cust_id.trim().equalsIgnoreCase("")))
{
query = query + "cust_id='"+cust_id+"'";
}
else
{
}
检查这样的所有列,代码看起来像一团糟,请告诉我是否有其他方法可以做到这一点
添加上述问题:
我也有类似操作符
的参数示例
if(strCustName!=null)
{
String query = "SELECT * FROM CUSTOMER WHERE CUSTOMER_NAME LIKE '"+strCustName+"';
}
答案 0 :(得分:1)
您可以使用NamedParameterJDBCTemplate
您的查询可能是
... WHERE (cust_id=:custIdParam OR :custIdParam is null)
AND (another_column=:another_param OR :another_param is null)
更新:
String sqlstr = "select * from the_table where lastname like :lastname or :lastname is null"
NamedParameterJdbcTemplate jt = new NamedParameterJdbcTemplate(datasource);
Map namedParameters = new HashMap();
namedParameters.put("lastname", "%test%");
SqlRowSet result = jt.queryForRowSet( sqlstr ,namedParameters );
来自the link