<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-42  評(píng)論-578  文章-1  trackbacks-0
             此EntityDao接口與EntityDaoImpl實(shí)現(xiàn)類,可取代了我們平時(shí)寫的UserDao,NewsDao,CompanyDao等等,可直接供Service層調(diào)用.其中實(shí)現(xiàn)類的代碼如下:
    /**
     * Copyright 2009-1012 the original author or authors.
     * My Blog site: 
    http://www.tkk7.com/rongxh7
     
    */


    package rong.common.dao;
    import java.io.Serializable;
    import java.sql.SQLException;
    import java.util.List;
    import org.hibernate.Criteria;
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.criterion.Criterion;
    import org.hibernate.criterion.Order;
    import org.hibernate.criterion.Restrictions;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.stereotype.Repository;
    import rong.common.utils.Pager;
    import rong.util.MyHibernateDaoSupport;

    /**
     * Dao層接口的實(shí)現(xiàn)類
     * 許多人習(xí)慣根據(jù)不多的業(yè)務(wù)邏輯定義不同的DAO層接口,如UserDao,NewsDao,CompanyDao等等,
     * 這樣往往使得編碼量十分龐大,而且?guī)砹司S護(hù)的困難,因此,抽取此DAO層接口,收錄大部分
     * DAO層必須的方法,以供Service層調(diào)用。
     * 
    @author rongxinhua
     * 
    @version 1.0
     * 
    @param <T> 范型,指實(shí)體類
     * 
    @param <PK> 范型,指實(shí)體類主鍵的數(shù)據(jù)類型,如Integer,Long
     * 
    @see rong.common.dao.EntityDao
     
    */


    @Repository(value
    ="entityDao")
    public class EntityDaoImpl<T,PK extends Serializable> extends MyHibernateDaoSupport implements EntityDao<T, PK>{

        
    /**
         * 保存實(shí)體
         * 包括添加和修改
         * 
    @param t 實(shí)體對(duì)象
         
    */

        
    public void saveOrUpdate(T t){
            getHibernateTemplate().saveOrUpdate(t);
        }

        
        
    /**
         * 更新實(shí)體
         * 可用于添加、修改、刪除操作
         * 
    @param hql 更新的HQL語句
         * 
    @param params 參數(shù),可有項(xiàng)目或多項(xiàng)目,代替Hql中的"?"號(hào)
         
    */

        
    public void update(final String hql,final Object params){
            getHibernateTemplate().execute(
    new HibernateCallback(){

                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    Query query 
    = session.createQuery(hql);
                    
    for(int i=0; i<params.length; i++){
                        query.setParameter(i, params[i]);
                    }

                    query.executeUpdate();
                    
    return null;
                }

            }
    );
        }

        
        
    /**
         * 刪除實(shí)體
         * 
    @param t 實(shí)體對(duì)象
         
    */

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

        
        
    /**
         * 刪除實(shí)體
         * 
    @param entityClass 實(shí)體類名
         * 
    @param id 實(shí)體的ID
         
    */

        
    public void delete(Class<T> entityClass,PK id){
            getHibernateTemplate().delete(get(entityClass,id));
        }

        
        
    /**
         * 單查實(shí)體
         * 
    @param entityClass 實(shí)體類名
         * 
    @param id 實(shí)體的ID
         * 
    @return 實(shí)體對(duì)象
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public T get(Class<T> entityClass,PK id){
            
    return (T)getHibernateTemplate().get(entityClass, id);
        }

        
        
    /**
         * 查詢?nèi)坑涗浟斜?br />      * 
    @param entityClass 實(shí)體類名
         * 
    @param propertyName 排序的參照屬性
         * 
    @param isAsc 排序方式
         * 
    @param criterions 查詢條件,可為0項(xiàng)或任意多項(xiàng)目
         * 
    @return 記錄List集
         
    */

        
    public List<T> findAll(final Class<T> entityClass,final String propertyName,final boolean isAsc,final Criterion criterions){
            
    int firstResult = 0;
            
    int maxResults = 0;        //設(shè)置為0,則表示查詢?nèi)坑涗?/span>
            return findByCriteria(entityClass, propertyName, isAsc, firstResult, maxResults, criterions);
        }

        
        
    /**
         * 查詢列表
         * 
    @param entityClass 實(shí)體類名
         * 
    @param propertyName 排序的參照屬性
         * 
    @param isAsc 排序方式,true表示升序,false表示降序,當(dāng)propertyName賦值為null時(shí),此參數(shù)無效
         * 
    @param firstResult 開始記錄序號(hào)
         * 
    @param maxResults 最大記錄數(shù)
         * 
    @param criterions 查詢條件,可有0項(xiàng)或任意多項(xiàng)目
         * 
    @return 記錄List集
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public List<T> findByCriteria(final Class<T> entityClass,final String propertyName,final boolean isAsc,final int firstResult,final int maxResults,final Criterion criterions){
            List
    <T> list = (List<T>)getHibernateTemplate().execute(new HibernateCallback(){

                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    Criteria criteria 
    = session.createCriteria(entityClass);
                    
    //按屬性條件查詢
                    for(Criterion criterion : criterions){
                        criteria.add(criterion);
                    }

                    
    //按某個(gè)屬性排序
                    if(null != propertyName){
                        
    if(isAsc){
                            criteria.addOrder(Order.asc(propertyName));
                        }
    else{
                            criteria.addOrder(Order.desc(propertyName));
                        }

                    }

                    
    //用于分頁查詢
                    if(maxResults != 0){
                        criteria.setFirstResult(firstResult);
                        criteria.setMaxResults(maxResults);
                    }

                    List
    <T> list = criteria.list();
                    
    return list;
                }

            }
    );
            
    return list;
        }

        
        
    /**
         * 查詢總記錄數(shù)
         * 
    @param entityClass 實(shí)體類名
         * 
    @param criterions 查詢條件,可有0項(xiàng)或任意多項(xiàng)
         * 
    @return 總記錄數(shù)
         
    */

        
    public int findCountsByCriteria(final Class<T> entityClass,final Criterion criterions){
                
    int totalCounts = (Integer)getHibernateTemplate().execute(new HibernateCallback(){

                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    Criteria criteria 
    = session.createCriteria(entityClass);
                    
    //按屬性條件查詢
                    for(Criterion criterion : criterions){
                        criteria.add(criterion);
                    }

                    
    int totalCounts = criteria.list().size();
                    
    return totalCounts;
                }

            }
    );
            
    return totalCounts;
        }

        
        
        
    /**
         * 分頁查詢
         * 
    @param entityClass 實(shí)體類名
         * 
    @param propertyName 排序參照屬性
         * 
    @param isAsc 排序方式,true表示升序,false表示降序,當(dāng)propertyName賦值為null時(shí),此參數(shù)無效
         * 
    @param firstResult 開始記錄序號(hào)
         * 
    @param maxResults 最大記錄數(shù)
         * 
    @param criterions 查詢條件,可為0項(xiàng)或任意多項(xiàng)目
         * 
    @return 封裝List和totalCounts的Pager對(duì)象
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public Pager<T> findForPager(final Class<T> entityClass,final String propertyName,final boolean isAsc,final int firstResult,final int maxResults,final Criterion criterions){
            
    int totalCounts = findCountsByCriteria(entityClass, criterions);
            List
    <T> entityList = findByCriteria(entityClass, propertyName, isAsc, firstResult, maxResults, criterions);
            Pager pager 
    = new Pager();
            pager.setTotalCounts(totalCounts);
            pager.setEntityList(entityList);
            
    return pager;
        }

        
        
    /**
         * 根據(jù)屬性值查詢列表
         * 
    @param entityClass 實(shí)體類名
         * 
    @param propertyName 屬性名
         * 
    @param value 屬性值
         * 
    @return List列表
         
    */

        
    public List<T> findByProperty(Class<T> entityClass,String propertyName,Object value){
            Criterion criterion 
    = Restrictions.eq(propertyName, value);
            List
    <T> list = findAll(entityClass, nulltrue, criterion);
            
    return list;
        }

        
        
    /**
         * 根據(jù)屬性值查詢單個(gè)對(duì)象
         * 
    @param entityClass 實(shí)體類名
         * 
    @param propertyName 屬性名
         * 
    @param value 屬性值
         * 
    @return 實(shí)體對(duì)象
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public T findUniqueByProperty(final Class<T> entityClass,final String propertyName,final Object value){
            T t 
    = (T)getHibernateTemplate().execute(new HibernateCallback(){

                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    Criteria criteria 
    = session.createCriteria(entityClass).add(Restrictions.eq(propertyName, value));
                    T t 
    = (T)criteria.uniqueResult();
                    
    return t;
                }

            }
    );
            
    return t;
        }

        
        
    /**
         * 根據(jù)屬性值查詢實(shí)體是否存在
         * 
    @param entityClass 實(shí)體類名
         * 
    @param propertyName 參照的屬性名
         * 
    @param value 屬性值
         * 
    @return 存在則返回true,不存在則返回false
         
    */

        
    public boolean isPropertyExist(final Class<T> entityClass,final String propertyName,final Object value){
            
    boolean isExist = (Boolean)getHibernateTemplate().execute(new HibernateCallback(){

                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    Criteria criteria 
    = session.createCriteria(entityClass).add(Restrictions.eq(propertyName, value));
                    
    boolean isEmpty = criteria.list().isEmpty();
                    
    return ! isEmpty;
                }

            }
    );
            
    return isExist;
        }

        
        
    /**
         * 
         * 
    @param hql 查詢語句
         * 用法如:可用于登錄驗(yàn)證時(shí),根據(jù)用戶名、密碼等信息查詢用戶
         * 
    @param params 參數(shù)數(shù)組,代替HQL中的"?"號(hào),可有0項(xiàng)目或多項(xiàng)
         * 
    @return 唯一實(shí)體,返回null則表示不存在配置的實(shí)體
         * 
    @exception 如果查詢的結(jié)果集不唯一,則拋異常
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public T findUniqueByHql(final String hql, final Object params ){
            
            T t 
    = (T)getHibernateTemplate().execute(new HibernateCallback(){

                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    Query query 
    = session.createQuery(hql);
                    
    for(int i=0; i<params.length; i++){
                        query.setParameter(i, params[i]);
                    }

                    T t 
    = (T)query.uniqueResult();
                    
    return t;
                }

            }
    );
            
    return t;
        }

        
        
    /**
         * 按HQL條件查詢列表
         * 
    @param hql 查詢語句,支持連接查詢和多條件查詢
         * 
    @param params 參數(shù)數(shù)組,代替hql中的"?"號(hào)
         * 
    @return 結(jié)果集List
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public List<T> findByHql(String hql,Object params){
            List list 
    = getHibernateTemplate().find(hql, params);
            
    return list;
        }

        
        
    /**
         * 按HQL分頁查詢
         * 
    @param firstResult 開始記錄號(hào)
         * 
    @param maxResults 最大記錄數(shù)
         * 
    @param hql 查詢語句,支持連接查詢和多條件查詢
         * 
    @param params 參數(shù)數(shù)組,代替餐hql中的"?"號(hào)
         * 
    @return 封裝List和total的Pager對(duì)象
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public Pager<T> findForPagerByHql(final int firstResult, final int maxResults, final String hql, final Object params){
            Pager
    <T> pager = (Pager<T>)getHibernateTemplate().execute(new HibernateCallback(){

                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    Query query 
    = session.createQuery(hql);
                    
    for(int position = 0; position < params.length; position ++){
                        query.setParameter(position, params[position]);
                    }

                    
    int totalCounts = query.list().size();    //總記錄數(shù)
                    
    //用于分頁查詢
                    if(maxResults > 0){
                        query.setFirstResult(firstResult);
                        query.setMaxResults(maxResults);
                    }

                    List
    <T> list = query.list();
                    Pager
    <T> pager = new Pager<T>();
                    pager.setEntityList(list);
                    pager.setTotalCounts(totalCounts);
                    
    return pager;
                }

            }
    );
            
    return pager;
        }

        

    }


          相關(guān)說明:MyHibernateDaoSupport類是我自定義的類,該類繼承HibernateDaoSupport,相關(guān)代碼,請(qǐng)參考我的基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (2) ,EntityDao接口與實(shí)現(xiàn)類EntityDao的方法聲明一樣,在此暫且不貼出來.而代碼中用到的Pager類,是一個(gè)封裝list<Entity>和totalCounts的POJO類,代碼比較簡單,在此也不貼出來.
          開發(fā)本代碼之前,參考過以下資料:
    1)Springside的源碼
    2)一位北京網(wǎng)友發(fā)給我的項(xiàng)目中的代碼
            (*^-^*) 本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處, http://www.tkk7.com/rongxh7謝謝! (*^-^*)

    本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!http://www.tkk7.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)
        

    posted on 2009-05-19 09:56 心夢(mèng)帆影 閱讀(10458) 評(píng)論(20)  編輯  收藏 所屬分類: HibernateSpring

    評(píng)論:
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-05-19 10:55 | xx
    封裝的不錯(cuò),不知道會(huì)不會(huì)太細(xì)化了!  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-05-19 12:36 | 幽夢(mèng)新影
    不錯(cuò),值得一看~~  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-05-19 16:36 | john locke
    不是新輪子吧。
    這種范型的dao類挺有用的  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-05-20 17:20 | 無量字幕
    不錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-05-20 20:55 | haidao
    博主你要就把所有相關(guān)的代碼都貼出來給新手學(xué)習(xí)嘛,哪有那樣缺一部分代碼,支支吾吾的,看著就冒火。這種東西javaeye上到處都是,何必搞得那樣神神秘秘  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-05-21 00:31 | 心夢(mèng)帆影
    @haidao
    1、從來沒有想過要搞你所謂的"神神秘秘,支支吾吾",只是省點(diǎn)篇幅而已;
    2、這些代碼,在Blogjava,Javaeye等網(wǎng)站上,當(dāng)然有很多類似的,多了并不一定不好,有自己的特點(diǎn)就行,關(guān)鍵的是自己能靈活運(yùn)用。
    3、只是看了一篇寫代碼的文章而已,你居然這么容易就冒火的?你可要仔細(xì)思考一下,你是不是真的適合搞這行。做Java程序員,學(xué)的東西多著呢,要看的文檔也多著呢,要寫的代碼更多著呢,你到時(shí)候可得整天冒火冒煙了。
    不過,還是感謝你的留言,貼代碼表示歉意。
    package rong.common.utils;
    import java.util.List;
    /**
    * 封裝分頁記錄的POJO類
    * @author rongxinhua
    *
    * @param <T> 范型,表示操縱的實(shí)體
    */
    public class Pager<T> {

    private List<T> entityList; //對(duì)象列表
    private int totalCounts; //總記錄數(shù)

    public List<T> getEntityList() {
    return entityList;
    }
    public void setEntityList(List<T> entityList) {
    this.entityList = entityList;
    }
    public int getTotalCounts() {
    return totalCounts;
    }
    public void setTotalCounts(int totalCounts) {
    this.totalCounts = totalCounts;
    }
    }  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-02 10:26 | leilei


    有幸拜讀,受益頗多,多謝多謝。

    另有幾處疑問,麻煩幫忙指導(dǎo)一下啊。

    上述代碼中,有幾處用到final Criterion criterions的地方,例如

    public List<T> findAll(final Class<T> entityClass,final String propertyName,final boolean isAsc,final Criterion criterions){

    我是copy上面的代碼的,看到criterions前面有幾個(gè)省略號(hào),不知道此處是否應(yīng)該是final Criterion[] criterions ?這樣的地方有好幾處。

    另有一處地方:final Object params
    例如:public void update(final String hql,final Object params){
    其中的final Object params是否也應(yīng)該為:final Object[] params ?
      回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-03 16:08 | javabeginer
    大俠,您好,我現(xiàn)在正在學(xué)習(xí)java,可否在您空閑的時(shí)候?qū)⑦@個(gè)項(xiàng)目的源代碼發(fā)給我,學(xué)習(xí)下,謝謝!dbemail@126.com  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-04 00:26 | javabeginer
    您好,在使用eclipse實(shí)踐您的代碼時(shí),比如用UserDao繼承EntityDao,UserDaoImpl繼承EntityDaoImpl實(shí)現(xiàn)UserDao時(shí),有兩個(gè)方法需要重寫,他們分別是1、public void delete(Class entityClass, Object id) {} 2、public Object get(Class class1, Object id) {return null;},請(qǐng)問源代碼如何改進(jìn),使方法不再需要重寫。謝謝?。?nbsp; 回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn))[未登錄] 2009-06-12 16:31 | yuyu
    如果把final Criterion[] criterions寫成這樣 那下面的方法又有問題出現(xiàn),
    public List<T> findByProperty(Class<T> entityClass,String propertyName,Object value){
    Criterion criterion = Restrictions.eq(propertyName, value);
    List<T> list = findAll(entityClass, null, true, criterion);
    return list;
    }

    這樣的話不能保持一致。 如果改???   回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-13 08:25 | metadmin
    看看我們這個(gè)怎么樣。 直接通過設(shè)計(jì)器打開數(shù)據(jù)庫表,然后通過鼠標(biāo)定制出SQL,而且包括了系統(tǒng)的權(quán)限需求。
    FLASH演示:http://www.metadmin.com/download/showEmployees.html" target="_new" rel="nofollow">http://www.metadmin.com/download/showEmployees.html 演示了按照機(jī)構(gòu)層級(jí)查詢員工的例子。

    ---------------------------------
    解開權(quán)限與業(yè)務(wù)耦合,提高開發(fā)效率
    細(xì)粒度權(quán)限管理軟件 試用版下載
    http://www.metadmin.com

      回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-25 14:28 | 黃燕青
    封裝的還不錯(cuò),我也想封裝。實(shí)現(xiàn)在DAO層里只有查詢的方法,那些插入、更新和刪除只在業(yè)務(wù)層調(diào)用工具類,但是還沒搞定。我看了你的這句話“此EntityDao接口與EntityDaoImpl實(shí)現(xiàn)類,可取代了我們平時(shí)寫的UserDao,NewsDao,CompanyDao等等,可直接供Service層調(diào)用”,你上面實(shí)現(xiàn)的不可以這樣做吧,我認(rèn)為你的這個(gè)實(shí)現(xiàn)類可以當(dāng)作DAO層的基類,比如public void update(final String hql,final Object params){},拼接HQL是在DAO層中進(jìn)行的,我們一般都不會(huì)在業(yè)務(wù)層中拼接,不知道我說的對(duì)不對(duì)?  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-25 14:32 | 黃燕青
    還有,我建議博主這個(gè)Object ...params(相當(dāng)于Object[] params),改成Map<String, Object>,我感覺這樣可讀性高,因?yàn)閰?shù)是有參數(shù)名和值的  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-25 18:00 | 心夢(mèng)帆影
    @黃燕青
    可以直接供Service調(diào)用,不用再寫UserDao,NewsDao,CompanyDao等了.但正如你所說的,可能會(huì)在Service層寫HQL了,這樣,就增大了DAO層和Service層的偶合性了,這是不好的地方.  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-25 18:04 | 心夢(mèng)帆影
    @黃燕青
    寫成可變參數(shù)的形式,直接method(param1,param2,param3)插入值就行,如果,Map<String, Object>的話,可讀性強(qiáng),但要通過構(gòu)建Map實(shí)例,才能插入,即Map map = new HashMap();map.put("xxx","xxx"),再把它插入到method參數(shù)中method(map),兩者各有優(yōu)點(diǎn),也各有缺點(diǎn),根據(jù)需要和個(gè)人所好使用.  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-06-26 09:10 | 黃燕青
    @心夢(mèng)帆影
    呵呵,說的有道理,java學(xué)的東西真多,哎,感覺自己學(xué)的很少。
      回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-07-29 11:53 | chumq
    final Criterion criterions 如何給它傳值呢?不是很清楚。謝謝回答  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2009-10-29 17:18 | 379548695
    是啊老大你這個(gè)final Criterion criterions
    再業(yè)務(wù)層是怎么創(chuàng)建的???  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn))[未登錄] 2010-07-25 18:51 | 過客
    不錯(cuò) 很好的示例 謝了  回復(fù)  更多評(píng)論
      
    # re: 奮斗兩天,終于開發(fā)了自己的DAO層公共類(Spring+Hibernate實(shí)現(xiàn)) 2013-07-08 19:22 | www
    findForPagerByHql方法中用 int totalCounts = query.list().size();獲取總記錄數(shù),query.list()相當(dāng)于是先查出所有的對(duì)象,如果數(shù)據(jù)量大,已經(jīng)內(nèi)存溢出了  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲情a成黄在线观看动漫尤物| 在线视频亚洲一区| 中文永久免费观看网站| 成人免费视频一区| 亚洲日本一区二区| 国产免费MV大全视频网站| 日韩成人免费aa在线看| 亚洲最新黄色网址| 女人体1963午夜免费视频| 亚洲国产成人久久一区久久| 亚洲欧美国产国产综合一区| 亚洲免费电影网站| 亚洲国产第一站精品蜜芽| 成年网在线观看免费观看网址 | 最近中文字幕大全免费版在线| 国产一级淫片视频免费看| 亚洲精品天堂在线观看| 巨波霸乳在线永久免费视频| 亚洲爆乳无码一区二区三区| 一区二区三区免费电影| 四虎永久免费网站免费观看| 亚洲欧美综合精品成人导航| 国产精品永久免费10000| 久久亚洲精品成人av无码网站| 国产一级在线免费观看| 久久精品国产精品亚洲| 黄网站色视频免费看无下截| 日本特黄特色aa大片免费| 国产 亚洲 中文在线 字幕| 国内精品乱码卡1卡2卡3免费| 91嫩草私人成人亚洲影院| 久久久久国色av免费看| 国产亚洲人成无码网在线观看 | 免费A级毛片无码A| 亚洲av无码成人精品区一本二本| 免费做爰猛烈吃奶摸视频在线观看 | 亚洲av成人一区二区三区| 亚洲视频免费在线看| 在线观看亚洲一区二区| 99热精品在线免费观看| 亚洲人成在线播放网站岛国|