public class DaoSupport<T> implements DaoBase<T> {  
     private JdbcTemplate jdbcTemplate;
     public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
    } 
    public DaoSupport() {  
          
        ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();  
        clazz = (Class)pt.getActualTypeArguments()[0];  
    }  
  
    protected Class<T> clazz;  
    public T getPerson(Integer id) {         return jdbcTemplate.query("select * from person", new Object[]{},new RowMapper() {
//这里是个回调
@Override
public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
return null;
}
});
          
    } }  请问这里面的泛型怎么实现                        new RowMapper() {

@Override
public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
return null;
}知道的帮帮忙啦

解决方案 »

  1.   

    我这两天模拟过tomcat开源的dbutil,和你的代码很类似,实现不了!只能强转。
      

  2.   


    public Object mapRow(ResultSet rs, int paramInt) throws SQLException {
    Object object = null;
    object = refectSetValue(rs, object);
    return object;
    // TongDto tongDto = new TongDto();
    // tongDto.setId(rs.getInt(1));
    // return tongDto;
    } } /**
     * 反射属性 回调赋值
     * 
     * @param rs
     * @param object
     * @return
     */
    private Object refectSetValue(ResultSet rs, Object object) {
    try {
    object = EntityClass.newInstance();
    } catch (Exception e) {
    e.printStackTrace();
    }
    Field[] fields = EntityClass.getDeclaredFields();
    try {
    for (int i = 0; i < fields.length; i++) {
    fields[i].setAccessible(true); if (fields[i].getType() == String.class) {
    fields[i].set(object, rs.getString(i + 1));
    } else if (fields[i].getType() == int.class) {
    fields[i].set(object, rs.getInt(i + 1));
    } else if (fields[i].getType() == Integer.class) {
    fields[i].set(object, rs.getInt(i + 1));
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return object;
    }
    想出来了
      

  3.   

    .返回的是Object只是用了反射,哪有泛型= =返回一个Object太简单了
      

  4.   

    使用SimpleJdbcTemplate 吧 把jdbctemplate做了进一步的封装  如你想获取一个对象
    public SysUsers getSysUsersById(SysUsers sysUsers) {
    SysUsers object = null;
    String sql = "select * from SYS_USERS model where model.id = :id ";
    SqlParameterSource ps = new BeanPropertySqlParameterSource(sysUsers);
    object = simpleJdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<SysUsers>(SysUsers.class), ps);
    return object;
    }非常好用!希望对你有帮助