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