NamedParameterJdbcTemplate - 从

时间:2015-08-18 21:33:09

标签: java database spring jdbc spring-jdbc

在Spring的NamedParameterJdbcTemplate中。如何查询以执行"从学生中选择*#34;使用Spring 3.1.x版返回List而不提供任何参数?
根据 http://docs.spring.io/spring/docs/3.1.2.RELEASE/javadoc-api/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.html

列表 query(String sql,Map paramMap,RowMapper rowMapper)

但我不想提供任何paramMap,因为我正在做一个"选择*"。

如何使用3.1.x版本完成此操作?

由于

3 个答案:

答案 0 :(得分:1)

除了@Kirill Ch示例之外,Spring还有BeanPropertyRowMapper,它可以通过匹配名称来将行的列值映射到属性。确保您的属性和列具有相同的名称。例如,orgId列名为ORGID或org_id

public List<Organization> getAllOrganization(){
     String sql = "SELECT * FROM organization";
     List<Organization> orgList = namedParamJdbcTemplate.query(sql, new 
     BeanPropertyRowMapper<>(Organization.class));

    return orgList;
}

答案 1 :(得分:0)

您可以在getJdbcOperations()上致电NamedParameterTemplate;然后使用获得的对象,您可以调用例如<T> List<T> query(String sql, RowMapper<T> rowMapper)

查看文档;因为使用上面提到的query方法不使用准备好的语句。您可以使用(如Spring文档所述)<T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper)null作为参数传递。

更新: 刚检查了Spring的源代码,你可以像Gergely建议的那样传递一个空的paramMap。

更新2: 有没有机会更新到更新的Spring版本?春天3.2.14例如有你想要的方法。

答案 2 :(得分:0)

以下是一个例子:

public List<Organization> getAllOrganization(){
    String sql = "SELECT * FROM organization";
    List<Organization> orgList = namedParamJdbcTemplate.query(sql, new OrganizationRowMapper());

    return orgList;

}

OrganizationRowMapper

enter image description here