SSH 프레임워크:dao 레이어 공통 인터페이스 및 상위 클래스 추출

4422 단어 SSH 프레임워크
대오층의 기능이 비교적 고정되어 있기 때문에 대부분이 삭제 검사를 하고 있기 때문에 부류를 추출하여 계승하여 코드를 간소화할 수 있다.인터페이스 프로그래밍을 위한 것이기 때문에, 인터페이스 파일BaseDao를 새로 만듭니다.java와 구현 클래스 BaseDaoImpl.java, 실현 클래스 어떻게 쓰는지 중점
BaseDaoImpl.java
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T>{

    //        
    private Class clazz;

    public BaseDaoImpl(){
        // this     ,c    CustomerDaoImpl Class  
        Class c = this.getClass();
        // CustomerDaoImpl extends BaseDaoImpl  map
        //  2 :    BaseDaoImpl
        Type type = c.getGenericSuperclass();

        //   : type        
        if(type instanceof ParameterizedType){
            ParameterizedType ptype = (ParameterizedType) type;

            //     Customer
            Type[] types = ptype.getActualTypeArguments();
            this.clazz = (Class) types[0];
        }
    }

    /**
     *   
     */
    public void save(T t) {
        this.getHibernateTemplate().save(t);
    }

    /**
     *   
     */
    public void delete(T t) {
        this.getHibernateTemplate().delete(t);
    }

    /**
     *   
     */
    public void update(T t) {
        this.getHibernateTemplate().update(t);
    }

    /**
     *       
     */
    public T findById(Long id) {
        return (T) this.getHibernateTemplate().get(clazz, id);
    }

    /**
     *        
     */
    public List findAll() {
        return (List) this.getHibernateTemplate().find("from "+clazz.getSimpleName());
    }

    /**
     *     
     */
    public PageBean findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria) {
        //        
        PageBean page = new PageBean();
        //       
        page.setPageCode(pageCode);
        page.setPageSize(pageSize);

        //         :SQL      select count(*) from 
        criteria.setProjection(Projections.rowCount());
        List list = (List) this.getHibernateTemplate().findByCriteria(criteria);
        if(list != null && list.size() > 0){
            int totalCount = list.get(0).intValue();
            //     
            page.setTotalCount(totalCount);
        }

        //   SQL select * from xxx
        criteria.setProjection(null);

        List beanList = (List) this.getHibernateTemplate().findByCriteria(criteria, (pageCode-1)*pageSize, pageSize);
        //        
        page.setBeanList(beanList);
        return page;
    }
}

페이지 나누기 쿼리 PageBean 플러그인http://blog.csdn.net/mozha_666/article/details/79301334

좋은 웹페이지 즐겨찾기