【问题标题】:Spring framework jdbcTemplate's queryForObject methodSpring框架jdbcTemplate的queryForObject方法
【发布时间】:2013-06-11 17:59:20
【问题描述】:

我是 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 中看到过。

那么有人能解释一下这是什么吗?

非常感谢!

【问题讨论】:

    标签: java spring jdbc


    【解决方案1】:

    这是一个匿名类。

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

    匿名类使您的代码更简洁。他们 使您能够同时声明和实例化一个类。他们 类似于本地类,只是它们没有名称。使用它们 如果您只需要使用一次本地类。

    【讨论】:

    • 谢谢,看起来匿名类应该总是有一个父类/接口?
    • @AlfredZhong 匿名类总是扩展另一个类/接口,所以是的,它需要有一个“父”,您可以在其中覆盖方法。
    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    相关资源
    最近更新 更多