我如何形成jdbcTemplate的查询

时间:2016-06-07 05:55:31

标签: java sql jdbctemplate

如果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+"';
}

1 个答案:

答案 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