当前位置:编程学习 > JAVA >>

spring+jdbc泛型反射求解疑问


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;
}

知道的帮帮忙啦 --------------------编程问答-------------------- 我这两天模拟过tomcat开源的dbutil,和你的代码很类似,实现不了!只能强转。 --------------------编程问答-------------------- 上去 指数不够 --------------------编程问答--------------------

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;
}




想出来了 --------------------编程问答-------------------- 这个表情符合你 ! --------------------编程问答-------------------- .。。。返回的是Object。。。只是用了反射,哪有泛型= =返回一个Object太简单了 --------------------编程问答-------------------- 使用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;
}

非常好用!希望对你有帮助
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,