hibernate 之 sql查詢


如果用hibernate執行原生sql進行數據查詢可以調用

SQLQuery query = getSession().createSQLQuery(sql);

然后再執行

query.list()

這樣便可以將結果查詢出來,查這樣查詢出來的結果。是由值數組組成的list。

可一般我們想要的結果應該是以字段名為key的map組成的list或者是表名對應的對象組成的list。

這兩種結果均可通過hibernate提供的api來實現

對於第一種想要的結果:

可以通過重寫AliasedTupleSubsetResultTransformer來實現,如果下面的代碼

AliasedTupleSubsetResultTransformer f = new AliasedTupleSubsetResultTransformer() {
            
            @Override
            public boolean isTransformedValueATupleElement(String[] arg0, int arg1) {
             
                return false;
            }
            
            
            @Override//重寫這個方法是關鍵
            public Object transformTuple(Object[] tuple/*值數組*/, String[] aliases/*字段數組*/) { 
                Map<String, Object> map = new HashMap<String, Object>();
                for(int i = 0; i < aliases.length; i ++){
                    
                    map.put(aliases[i].toLowerCase(), tuple[i]);
                     
                }
                return map;
            }
        };
         List<Map<String, Object>> resultList = query.setResultTransformer(f).list();

對於第二種想要的結果即轉換成對應類的對象list,這種留給有心人去實現吧,

這種應該通過擴展SQLQuery.setResultSetMapping()去實現的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM