主题 : 模仿老大的架构做了一个简单的ssh框架,结果失败,请指点,谢谢
级别: 童生
UID: 2956
积分:11 加为好友
威望: 0 精华: 0
主题:1 回复:9
注册时间:2010-02-24
在线时长:0
1#   发表于:2010-04-13 22:46:33  IP:121.66.*.*
很简单的ssh三层架构,一个dao泛型基类,一个service泛型基类,service基类实现基本的findAll操作,具体的业务service 类集成service基本,并给基类传递泛型,似的具体业务类无需编写findAll方法,现在的问题是,好像具体的业务service无法把泛型传到 dao基类中, 在此感谢 


代码:

dao基类

Java 代码

   1. @Repository  
   2. public abstract class BaseDao<T extends Serializable> {  
   3.     protected Class<T> clazz;  
   4.   
   5.     protected SessionFactory sessionFactory;  
   6.   
   7.     protected BaseDao() {  
   8.         this.clazz = ReflectionUtils.getSuperClassGenricType(getClass());  
   9.     }  
  10.   
  11.     /** 
  12.      * 获取sessionFactory 
  13.      *  
  14.      * @return sessionFactory 
  15.      */  
  16.     public SessionFactory getSessionFactory() {  
  17.         return sessionFactory;  
  18.     }  
  19.   
  20.     /** 
  21.      * 采用@Autowired按类型注入SessionFactory,当有多个SesionFactory的时候Override本函数. 
  22.      */  
  23.     @Autowired  
  24.     public void setSessionFactory(final SessionFactory sessionFactory) {  
  25.         this.sessionFactory = sessionFactory;  
  26.     }  
  27.   
  28.     /** 
  29.      * 取得当前Session. 
  30.      */  
  31.     public Session getSession() {  
  32.         return sessionFactory.getCurrentSession();  
  33.     }  
  34.   
  35.     public List<T> findAll() {  
  36.         return createCriteria().list();  
  37.     }  
  38.     public Criteria createCriteria(final Criterion... criterions) {  
  39.         Criteria criteria = getSession().createCriteria(clazz);  
  40.         for (Criterion c : criterions) {  
  41.             criteria.add(c);  
  42.         }  
  43.         return criteria;  
  44.   
  45.     }  
  46. }  

@Repository
public abstract class BaseDao<T extends Serializable> {
protected Class<T> clazz;

protected SessionFactory sessionFactory;

protected BaseDao() {
this.clazz = ReflectionUtils.getSuperClassGenricType(getClass());
}

/**
 * 获取sessionFactory
 * 
 * @return sessionFactory
 */
public SessionFactory getSessionFactory() {
return sessionFactory;
}

/**
 * 采用@Autowired按类型注入SessionFactory,当有多个SesionFactory的时候Override本函数.
 */
@Autowired
public void setSessionFactory(final SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

/**
 * 取得当前Session.
 */
public Session getSession() {
return sessionFactory.getCurrentSession();
}

public List<T> findAll() {
return createCriteria().list();
}
public Criteria createCriteria(final Criterion... criterions) {
Criteria criteria = getSession().createCriteria(clazz);
for (Criterion c : criterions) {
criteria.add(c);
}
return criteria;

}
}




service 基类

Java 代码

   1. public class BaseManager<T extends Serializable> {  
   2.   
   3.     @Resource  
   4.     private BaseDao<T> baseDao;  
   5.   
   6.     public List<T> findAll() {  
   7.         return baseDao.findAll();  
   8.     }  
   9. }  

public class BaseManager<T extends Serializable> {

@Resource
private BaseDao<T> baseDao;

public List<T> findAll() {
return baseDao.findAll();
}
}



具体业务类
Java 代码

   1. @Service  
   2. public class TablsService extends BaseManager<Tabls>{  
   3.   
   4. }  

@Service
public class TablsService extends BaseManager<Tabls>{

}



测试类
Java 代码

   1. public class TablsServiceTest extends AbstractTestBean {  
   2.   
   3.     @Resource  
   4.     private TablsService tablsService;  
   5.    
   6.     @Test  
   7.     public void listTest() {  
   8.            
   9.         System.out.println(tablsService.findAll());  
  10.     }  
  11. }
1 共1页