在我的Spring Hibernate应用程序中,我将所有sql查询放在一个common_queries.xml文件中,其中一些查询需要2到3个参数,如下所示
<query id="mining.fuel" no-of-params="2">
select ms.id id,ms.name value,concat(ms.name,' ',' (',ms.code,')') label,ms.rate rate from mining_fuel ms where ms.name like '?' and ms.fuel_type_id=? LIMIT 10
</query>
在我的daoImpl中,我得到了这个查询
lookupList = jdbcTemplate.queryForList(q1.getQuery());
我会在这里得到查询,但如何传递'?'的值在这里,我在daoImpl中有我的那2个值.. pl发送如何实现这个的代码。我不想用准备言。
答案 0 :(得分:5)
使用this overload,它使用Object vararg传递查询参数:
lookupList = jdbcTemplate.queryForList(q1.getQuery(), value1, value2, value3);
答案 1 :(得分:4)
我认为您只需要创建一个包含查询使用的参数的Object数组,请记住订单很重要因为value1将是第一个替换?在查询中。
lookupList = jdbcTemplate.queryForList(q1.getQuery(), new Object[]{value1, value2, value3});
答案 2 :(得分:0)
首先在jdbctemplate引用上调用queryForList方法并在此对象类型数组中传递查询和对象类型数组我们必须只传递对象意味着如果我们有id它是int类型我们必须在放入对象数组时转换为对象类型。
lookupList = jdbcTemplate.queryForList(q1.getQuery,new Object [] {names,new Integer(id),new Float(sal)}