我不知道它的「最佳實踐」,但我建議以下方法(不使用bean屬性 - >應工作得更快)。
通常你知道你期望檢索什麼樣的對象。所以你可以在執行sql時提供相應的行映射器。
聲明自定義的抽象通用的RowMapper併爲每種類型的人建立自己的行映射,即:
private static abstract class PersonRowMapper<T extends Person> implements RowMapper<T> {
@Override
public abstract T mapRow(ResultSet rs, int rowNum) throws SQLException;
protected void mapBase(ResultSet rs, T person) throws SQLException {
//base mapping here
}
}
private static class EmployeeRowMapper extends PersonRowMapper<Employee> {
@Override
public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
Employee e = new Employee();
mapBase(rs, e);
//set other specific employee props
}
}
通過其他方法,您可以在基礎映射爲特定的道具聲明抽象方法,即
private static abstract class PersonRowMapper<T extends Person> implements RowMapper<T> {
@Override
public T mapRow(ResultSet rs, int rowNum) throws SQLException {
T instance = getInstance();
//set base props here
fill(rs, instance);
}
//e.g. return new Employee()
protected abstract T getInstance();
//fill specific instance props
protected abstract void fill(ResultSet rs, T instance) throws SQLException;
}
感謝您的回覆。這就是我最終做的!很好,以獲得一些驗證。 – jnt30 2009-12-03 14:28:13