使用Jdbctemplate和Rowmapping获取Bean而不是List对象

时间:2017-10-22 09:54:17

标签: java spring jdbctemplate

我试图获取结果集并将其转换为Bean。它不起作用。但后来我尝试强制转换为Bean列表,并且它有效。任何人都可以告诉我如何使用Jdbctemplate和Rowmapping直接获取Bean对象。

这是我的代码。

String sql = "SELECT * FROM BB.Employeeswhere " +
            "BBEmpPK = ? ";

List<EmployeeDto> deals = (List<EmployeeDto>) getJdbcTemplate().query(
            sql,
            new Object[] {empId},
            new RowMapper<EmployeeDto>() {
                public EmployeeDtomapRow(ResultSet rs, int rowNum) throws SQLException {
                    EmployeeDto d = new EmployeeDto();
                    d.setEmpName(rs.getString(2));                     
                    return d;
                }
            });

理想情况下,这应该只返回一行。有什么想法吗?

如果没有行映射器的任何其他解决方案,那将是更好的。因为在表格中,我有50多列,所以很难用这些字段创建一个Bean

1 个答案:

答案 0 :(得分:1)

如果您只需要一行和一列,就可以轻松使用:
String userName = jdbcTemplate().queryForObject(sql, new Object[] {empId}, String.class);

如果您想要多于一行和一列,您可以使用:
List<String> userNames = jdbcTemplate.queryForList(sql, new Object[] {empId}, String.class);

<小时/> 边注: 如果您希望它能够工作,那么您的实现应该是这样的:

List<EmployeeDto> deals = jdbcTemplate.query(
    sql,
    new Object[] {empId},
    new RowMapper<EmployeeDto>() {
      public EmployeeDto mapRow(ResultSet rs, int rowNum) throws SQLException {
        EmployeeDto d = new EmployeeDto();
        d.setName(rs.getString(2));
        return d;
      }
});