关于GenericDAOImp调用问题

阳光成就未来 2011-11-09 11:39:52
例子:
public interface GenericDao<T extends Serializable, PK extends Serializable>

public class GenericDAOImpl<T extends Serializable, PK extends Serializable>
extends HibernateDaoSupport implements GenericDao<T, PK>

1.service中直接使用
GenericDAOImpl<User, Integer> userDAO = new GenericDAOImpl<User, Integer>(sessionFactory, User.class);

2.继承出子DAO
interface IUserDAO extends GenericDAO<User, Integer>

class UserDAOImpl extends GenericDAOImpl<User, Integer> implements IUserDAO


作为底层的service,DAO我不确定<User, Integer>,这两个参数,有可能是其他的对象,比如<News, Long><Shop, Integer>等,我该如何灵活继承调用?谢谢!
...全文
510 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
阳光成就未来 2011-11-09
  • 打赏
  • 举报
回复
你没看懂我的意思,不是动态获取User实例,是动态使用这个DAO,现在是写死的<User, Integer>,要每个实例都写一个DAO,太麻烦了。
shine333 2011-11-09
  • 打赏
  • 举报
回复
算我白说了,你连你需要什么也不知道。
阳光成就未来 2011-11-09
  • 打赏
  • 举报
回复
请问有相关的教程吗?或者搜什么关键词,确实不太明白...
shine333 2011-11-09
  • 打赏
  • 举报
回复
你现在的base class,不知道<T extends Serializable, PK extends Serializable>的实际类型,以上代码就是告诉你实际类型怎么取。
阳光成就未来 2011-11-09
  • 打赏
  • 举报
回复
兄弟,我不太明白呀,请解释一下...
shine333 2011-11-09
  • 打赏
  • 举报
回复
以上代码只限于继承
shine333 2011-11-09
  • 打赏
  • 举报
回复
假如是class UserDAOImpl extends GenericDAOImpl<User, Integer>的情况,在GenericDAOImpl中间添加如下代码,可以动态获取<User, Integer>

    // UserDAOImpl类型
Class<?> clazz = getClass();
// UserDAOImpl中的泛型参数
Class<? extends Serializable> infoType = (Class<? extends Serializable>) ((ParameterizedType) clazz
.getGenericSuperclass()).getActualTypeArguments()[0];
Class<? extends Serializable> pkType = (Class<? extends Serializable>) ((ParameterizedType) clazz
.getGenericSuperclass()).getActualTypeArguments()[1];

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧