Spring框架jdbcTemplate的queryForObject方法

时间:2013-06-11 17:59:20

标签: java spring jdbc

我是Spring的新手并阅读“Spring in Action”一书,我对以下示例有疑问:

public Employee getEmployeeById(long id) {
  return jdbcTemplate.queryForObject(
      "select id, firstname, lastname, salary " +
      "from employee where id=?",
      new RowMapper<Employee>() {
        public Employee mapRow(ResultSet rs,
                int rowNum) throws SQLException {
          Employee employee = new Employee();
          employee.setId(rs.getLong("id"));
          employee.setFirstName(rs.getString("firstname"));

          employee.setLastName(rs.getString("lastname"));
          employee.setSalary(rs.getBigDecimal("salary"));
          return employee;
        }
      },
      id);
}

queryForObject(...)的第二个参数是什么类型“new RowMapper()...”,那是什么样的Java语法?

它看起来像获取一个类RowMapper的新实例,直到大括号,它看起来像只有一个方法mapRow的类声明。这种语法看起来很奇怪,我从未在Java中看到它。

那么有人会解释这是什么吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

这是一个匿名课程。

http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

  

匿名类使您可以使代码更简洁。他们   使您能够同时声明和实例化一个类。他们   就像当地的班级,除了他们没有名字。使用它们   如果你只需要使用一次本地课程。