hql和sql執行查詢count和指定字段並獲取結果集

有一天,興致勃勃做畢設的最後一點功能。

“怎麼獲取corders表中decorateModeId字段數量大於0的decorateModeId字段的列表集合?”

很拗口是不是,corders是我的一個商品訂單列表,就是顧客已經買了之後的一個關於發貨的一個數據庫表:


就是這樣的,姐妹!

還有一個decoratemode表:
 

然後我要查找出在corders表decorateModeId數量多於01的decorateModeId字段,然後根據decorateModeId字段去decoratemode查找Decoratemode類對象返回。

沒之前第二句那麼拗口對不對,姐妹!

我用的是SSH框架做的系統,你們懂,就是Strust2+Spring3.1.1+Hibernate4.1.4.

代碼來了:

@Override
    public List<Decoratemode> getRecommendDecorate
    (int currentPage, int pageSize) {
        // TODO Auto-generated method stub
        Session session = getSession();
        Transaction transaction = session.beginTransaction();


        Session session1 = getSession();
        Transaction transaction1 = session1.beginTransaction();
     
         Query query = session.createSQLQuery
                    ("select count(*),decorateModeId "
                            + "from corders group by decorateModeId "
                            + "having count(*)>0");
//使用sql的createSQLQuery查詢通過decorateModeId分組的count值和decorateModeId字段;


        int startRow=(currentPage-1)*pageSize;
        query.setFirstResult(startRow);
        query.setMaxResults(pageSize);//分頁處理


        List<Object[]> object = query.list();
        Map map = null;
        if(object!=null&&object.size()>0){
             map = new HashMap();
             for(int j=0;j<object.size();j++){
                 map.put(j,object.get(j)[1]);//獲取的count,decorateModeId的數組,取decorateModeId的值放在map中
             }
        }
        transaction.commit();
        
        List<Decoratemode> decoratemodes=new ArrayList<Decoratemode>();
    
        for(int i=0;i<object.size();i++){
            System.out.println(map.get(i)+",");
             Query query1 = session1.createQuery
                        ("from Decoratemode where decorateModeId='"+map.get(i)+"'");
//取出map的decorateModeId值在decoratemode表中查詢
             List<Decoratemode> d=query1.list();
             Decoratemode dm=new Decoratemode();//
這個一定得加,不然會覆蓋之前add在list列表的對象
             dm=d.get(0);
             decoratemodes.add(dm);
//把所有符和條件的都加入list列表中
        
        }
        transaction1.commit();
        session.close();
        session1.close();
    
        return decoratemodes;
    }

知識點姐們!!!

除了有sql和hql結合count和字段查詢

還有list在循環語句中添加對象在末尾

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章