如何从Generic类创建BeanPropertyRowMapper?

时间:2014-04-11 11:05:52

标签: java spring

我有一个班级

public class WFWSimpleDAOImpl<ObjectClass> implements WFWSimpleDAO<ObjectClass> {

包含方法

public List<ObjectClass> retrieve(Object[] params) throws Exception {

返回对象的类型列表

return (List<ObjectClass>) getJdbcTemplate().query(sqlToExec, params, new BeanPropertyRowMapper<ObjectClass>())

BeanPropertyRowMapper构造函数需要参数来定义映射类

BeanPropertyRowMapper(Class mappedClass) 

我接下来需要:

BeanPropertyRowMapper(ObjectClass) 

但是我收到编译器错误消息

ObjectClass can not be resolved to a variable

我应该如何在这种情况下进行课堂演出?

2 个答案:

答案 0 :(得分:2)

使用TypeTools替代方案:

Class<?> objClass = TypeResolver.resolveRawArgument(WFWSimpleDAO.class, dao.getClass());

答案 1 :(得分:1)

解决方案并非像我想象的那么简单。最后我使用了反射,并且这样做了:

Class<ObjectClass> classOfObjectClass = (Class<ObjectClass>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
return (List<ObjectClass>) getJdbcTemplate().query(sqlToExec, params, new BeanPropertyRowMapper(classOfObjectClass));