Java jdbctemplate使用动态sql返回多行
我有一个方法需要从数据库返回字符串列表Java jdbctemplate使用动态sql返回多行,java,jdbctemplate,Java,Jdbctemplate,我有一个方法需要从数据库返回字符串列表 private static List<String> getUserForAccount(final String account) { String sql = "SELECT NAME FROM CLIENTS WHERE ACCOUNT = ?"; 私有静态列表getUserForAccount(最终字符串帐户){ String sql=“从帐户=?”的客户端选择名称”; } 我不确定哪种jdbcTemplate方法最适合这种
private static List<String> getUserForAccount(final String account) {
String sql = "SELECT NAME FROM CLIENTS WHERE ACCOUNT = ?";
私有静态列表getUserForAccount(最终字符串帐户){
String sql=“从帐户=?”的客户端选择名称”;
}
我不确定哪种jdbcTemplate方法最适合这种情况。我认为我不能使用queryForList(),因为SQL有一个参数
欢迎提出任何建议
谢谢查看API。你说“我认为我不能使用queryForList(),因为SQL有一个参数”真的没有多大意义。我认为所有的queryForList()
都采用参数,即参数Object[]args
,如中所示
queryForList()
有许多重载方法,但我认为这正是您想要的方法。基本上,只需传递您的查询,一个参数数组,在您的情况下,它将仅是account
,然后传递db参数。差不多
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 });
}
}
public类SomeDaoImpl扩展JdbcTemplate实现SomeDao{
私有静态最终字符串名称\u按\u帐户=
“从帐户=?”的客户端选择名称”
公共列表getUsernameByAccount(字符串帐户){
返回(列表)查询列表(
按账户命名,
新对象[]{account},
新的int[]{Types.VARCHAR});
}
}
返回的键将是列的名称。然后你可以像这样迭代地图列表
List<Map<String, Object>> result = someDao.getUsernameByAccount(account);
for (Map map : result) {
System.out.println(map.get("NAME"));
}
List result=someDao.getusernamebycount(account);
用于(映射:结果){
System.out.println(map.get(“NAME”);
}
您可能还对一些重载的
query()
方法感兴趣,这些方法采用了PreparedStatementSetter
和RowMapper
的变体。看看我上面链接的API谢谢!是的,我的论点毫无意义。。。道歉。