九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
hibernate實現(xiàn)多表聯(lián)合查詢

 以前用sql實現(xiàn)聯(lián)合查詢 是非常簡單的事,只需要寫sql語句就可以,第一次遇到hibernate要實現(xiàn)多表聯(lián)合查詢的時候還楞了一下。最后看了下資料,才恍然大悟,hibernate實現(xiàn)多表聯(lián)合查詢跟SQL沒多大差別。  

    hibernate很多實現(xiàn)都是靠喜歡配關(guān)系,但是如果兩張表,數(shù)據(jù)量都非常大的時候,并不合適配關(guān)系。

    例如:student表和score表需要做聯(lián)合查詢。

    1)sql: select s.id,s.name,sc.score from student as s,score as sc where s.id = sc.userId;

    (字段都是用的數(shù)據(jù)庫中字段名稱)

    2)HQL: select s.id,s.name,sc.score from Student as s,Score as sc where s.id = sc.userId;

    (上面字段都是 javabean的屬性)

     如果我們按1)查詢的話,必須調(diào)用 session.createSQLQuery();方法

     如果按2)查詢,還是調(diào)用 session.createQuery();

     只是要注意,平時我們查詢的時候,例如:“from Student ”查詢的結(jié)果集 封裝的全都是student對象,但是2)執(zhí)行的結(jié)果集里面不是對象,而是一系列數(shù)組。需要轉(zhuǎn)換成需要的樣式。

下面 是查詢的一段代碼:

Session session = getHibernateTemplate().getSessionFactory()
   .getCurrentSession();
   StringBuffer sb = new StringBuffer(" select user.username,user.truename,user.sex,user.idnum,user.level,s.sumScore from Score as s,Examuser as user where s.id.userId = user.id ");
   if(score != null){
    if(score.getExamId()!=null && !"".equals(score.getExamId())
      && !"null".equals(score.getExamId())){
     sb.append(" and s.examId =:examId ");
    }
    if(score.getExamPlace()!=null && !"".equals(score.getExamPlace())
      && !"null".equals(score.getExamPlace())){
     sb.append(" and s.examPlace =:examPlace ");
    }
    if(score.getUsername()!=null && !"".equals(score.getUsername())
      && !"null".equals(score.getUsername())){
     sb.append(" and s.username like:username ");
    }
   }
   sb.append(" order by s.sumScore desc ");
   Query q = session.createQuery(sb.toString());
   if(score != null){
    if(score.getExamId()!=null && !"".equals(score.getExamId())
      && !"null".equals(score.getExamId())){
     q.setParameter("examId",score.getExamId());
    }
    if(score.getExamPlace()!=null && !"".equals(score.getExamPlace())
      && !"null".equals(score.getExamPlace())){
     q.setParameter("examPlace",score.getExamPlace());
    }
    if(score.getUsername()!=null && !"".equals(score.getUsername())
      && !"null".equals(score.getUsername())){
     q.setParameter("username","%"+score.getUsername()+"%");
    }
   }
   List list = q.list();

需要將查詢的結(jié)果集 進行一下轉(zhuǎn)換:

List stuList = scoreService.findAllScore(queryScore, null); // 返回的結(jié)果集
   if(stuList != null && stuList.size()>0){
    list = new LinkedList();
    StudentScore st;
    for(int i = 0; i < stuList.size();i++){
     st = new StudentScore();
     Object[] object = (Object[])stuList.get(i);// 每行記錄不在是一個對象 而是一個數(shù)組
     String userId =  (String)object[0];
     String username =  (String)object[1];
     String truename =  (String)object[2];
     String sex =  (String)object[3];
     String idnum =  (String)object[4];
     String level =  (String)object[5];
     Double sumScore =  Double.parseDouble(String.valueOf(object[6]));
     String paperId =  (String)object[7];
     // 重新封裝在一個javabean里面
     st.setUserId(userId);
     st.setUsername(username);
     st.setTruename(truename);
     st.setIdnum(idnum);
     st.setLevel(DictSwitch.getValue("DICT_LEVEL",level));
     st.setSex(DictSwitch.getValue("DICT_SEX",sex));
     st.setPaperId(paperId);
     st.setSumScore(sumScore);
     st.setExamplace(DictSwitch.getValue("DICT_EXAMSTATION",examplace));
     list.add(st); // 最終封裝在list中 傳到前臺。
    }

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
hibernate連接mysql示范
hibernate--basedao,借鑒別人的完善自己的
SolrJ 操作HttpSolrServer, ConcurrentUpdateSolrServer和CloudSolrServer
JAVA上DES加密算法的實現(xiàn)用例
JAVA操作數(shù)據(jù)庫方式與設(shè)計模式應(yīng)用
解析Hibernate Validator
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服