我有一个方法需要从DB返回一个字符串列表。
private static List<String> getUserForAccount(final String account) {
String sql = "SELECT NAME FROM CLIENTS WHERE ACCOUNT = ?";
}
我不确定哪种jdbcTemplate方法最适合这种情况。我不认为我可以使用queryForList(),因为SQL有一个参数。
欢迎任何建议。
谢谢
答案 0 :(得分:1)
查看JdbcTemplate
API。你认为“我认为我不能使用queryForList(),因为SQL有一个参数”真的没有多大意义。我认为所有queryForList()
都采用参数,即参数Object[] args
,如
queryForList()
有许多重载方法,但我认为这是你想要的方法。基本上只是传递你的查询,一个参数数组,在你的情况下只有account
,并传递db Types
(int)参数。像
public class SomeDaoImpl extends JdbcTemplate implements SomeDao {
private static final String NAME_BY_ACCOUNT =
"SELECT NAME FROM CLIENTS WHERE ACCOUNT = ?"
public List<Map<String, Object>> getUsernameByAccount(String account) {
return (List<Map<String, Object>>) queryForList(
NAME_BY_ACCOUNT,
new Object[] { account },
new int[] { Types.VARCHAR });
}
}
键返回将是列的名称。然后你可以迭代像
这样的地图列表List<Map<String, Object>> result = someDao.getUsernameByAccount(account);
for (Map map : result) {
System.out.println(map.get("NAME"));
}
您可能还会对某些重载query()
方法感兴趣,这些方法采用PreparedStatementSetter
和RowMapper
的变体形式。看看我上面链接的API