`
mayday85
  • 浏览: 45654 次
  • 性别: Icon_minigender_1
  • 来自: 污点星狗屎国
文章分类
社区版块
存档分类
最新评论

一种非常蹩脚的万用泛型service实现

阅读更多

写完我自己已经吐了

@Service
public class PubManager<T, PK extends Serializable>{
	
	private SessionFactory sessionFactory;
	@Autowired
	private PubManagerImpl<T, PK> mgr;
	
	@Autowired  
    public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
    }

	public PubManagerImpl<T, PK> getI(Class<T> c){		
		if(null == mgr.getDAO()){
			mgr.setDao(new HibernateDao<T, PK>(sessionFactory ,c));
		}	
		return mgr;		
	}		
	
}


@Service
@Transactional
public class PubManagerImpl<T, PK extends Serializable> extends AbsManager<T, PK>  implements absMgr<T, PK> {
	
	private HibernateDao<T, PK> dao;	
	
	@Override
	public HibernateDao<T, PK> getDAO() {		
		return dao;
	}

	public void setDao(HibernateDao<T, PK> dao) {
		this.dao = dao;
	}
	
}

Controller
@RequestMapping("/xxx/xxxx")
public class XxxxXxxxXxxController {
	
	@Autowired  
	private CodeManager codeManager;
	
	@Autowired  
	private PubManager<XxxxxXxxxXxxx, String> pubManager;


@RequestMapping("allXxx")
public @ResponseBody Page<XxxxxXxxxXxxx> logs(){	
	return pubManager.getI(XxxxxXxxxXxxx.class).searchByPage();
}


需要获得运行时的Class<T>
感觉上是可以做到样子……

参照泛型DAO的写法
完全不行

人家也不是万用实现

求打通七筋八脉~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics