Spring文档指出:


  “如果最后两个代码段实际上存在于同一个
  应用程序,删除存在于
  两个RowMapper匿名内部类,并将它们提取到一个
  单个类(通常是静态内部类),然后可以是
  由DAO方法根据需要引用。”


在这种情况下,“最后两个摘要”是数据库方法,它们使用具有相同逻辑的两个行映射器来映射其调用的结果。

我的问题是为什么内部RowMapper类需要为静态类...还是必须为静态类?我的DAO中有一个自动连接的服务方法,用于查找常量值,例如:

//Returns "USA"
lookupService.getCountryForCountryId(1)


在父类中自动接线。

从以下更改我的RowMapper定义:

public static final RowMapper<Order> BASIC_SHALLOW_MAPPER = new RowMapper<Order>() {...}




public final RowMapper<Order> BASIC_SHALLOW_MAPPER = new RowMapper<Order>() {
    public Order mapRow(ResultSet rs, int rowNum) {
        ...
        lookupService.getCountryForId(rs.getInt("country_id"));
        ...
    }
}


…使我能够如上所述在rowmapper中转换该数据。这种方法有什么缺点吗?

最佳答案

行映射器类不必是静态的。但是大多数情况下,它不需要访问父类的字段,在这种情况下,使其静态化更为有效。

10-02 22:34