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

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

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

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    Java程序員慣性思維的一個錯誤

     很久沒有積累東西了,碰巧前幾天遇到一個的問題,雖然不大但是比較有意思,在這里稍微記錄一下,以后可以作為面試題之類的考驗其他人,想想也遠比那些被我們詬病的題目要實際的多:

      有表結構如下:

  • T_SOME_TABLE{ 
  • crowid varchar(36); 
  • zrmb float(7,3); 
  • zjdw float(7,3); 
  • }
  •   問以下兩段代碼,哪段會出現錯誤,為什么?

      代碼片段一:

  • //后臺代碼如下: 
  •     String hqlStr="select SUM(t.zrmb) AS SUM_1,SUM(t.zjdw) AS SUM_2 from T_SOME_TABLE t where 1=1 "
  •     List sumList=baseDao.find(hqlStr);//hibernate實現查詢HQL匯總語句返回結果List 
  •     request.setAttribute("sumList",sumList); 
  • //前臺代碼如下: 
  •     String sum1=""
  •     String sum2=""
  •     ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList"); 
  •     if(null!=sumList){ 
  •         for(int i=0;i<sumList.size();i++){ 
  •             Object[] tempObj=(Object[])sumList.get(i); 
  •             sum1=tempObj[0]==null?"0.0":tempObj[0].toString(); 
  •             sum2=tempObj[1]==null?"0.0":tempObj[1].toString(); 
  •         } 
  •     } 
  •     out.prinln("sum1:"+sum1); 
  •     out.prinln("sum2:"+sum2);
  •   代碼片段二:

  • //后臺代碼如下: 
  •     String hqlStr="select SUM(t.zrmb) AS SUM_1  from T_SOME_TABLE t where 1=1 "
  •     List sumList=baseDao.find(hqlStr);//hibernate實現查詢HQL匯總語句返回結果List 
  •     request.setAttribute("sumList",sumList); 
  • //前臺代碼如下: 
  •     String sum1=""
  •     ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList"); 
  •     if(null!=sumList){ 
  •         for(int i=0;i<sumList.size();i++){ 
  •             Object[] tempObj=(Object[])sumList.get(i); 
  •             sum1=tempObj[0]==null?"0.0":tempObj[0].toString(); 
  •         } 
  •     } 
  •     out.prinln("sum1:"+sum1);
  •   實際運行會發現 代碼片段2會出現錯誤 而代碼片段1是正??梢赃\行的,這里是在功能開發過程中 片段2是在片段1的基礎上慣性思維去實現的,而實際運行卻會發現 結果并不是想要的那樣,這個動手能力強的人可以實際調試一下就會很快明白里面的所以然。這里簡單說一下:

      做過hibernate的人都知道 用hibernate調用sql查詢出的匯總語句,返回的結果是封裝成Object的保存到List中的,而代碼1和代碼2相比較,差別只是在字段的多少上,如果是2個以上的字段 結果是封裝成Object[]數組的,這個無可爭議,但是如果是一個字段的話List里保存的是Object,而不是Object[]數組。

      這樣就可以推論這里hibernate內部是做了處理的。

      代碼2循環中應該是:

  • Object tempObj=(Object)sumList.get(i);  
  • sum1=tempObj==null?"0.0":tempObj.toString();
  • posted on 2011-11-30 10:57 順其自然EVO 閱讀(135) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2011年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲heyzo专区无码综合| 亚洲国产成人久久综合一| 亚洲国产成a人v在线观看| 91精品导航在线网址免费| 亚洲乱码无限2021芒果| 在线观看的免费网站| 中文字幕亚洲情99在线| 国产精品成人免费综合| 美女被爆羞羞网站在免费观看 | 久久国产精品免费一区二区三区| 国产三级电影免费观看| 人成免费在线视频| 亚洲日韩精品A∨片无码| 久草免费福利视频| 亚洲图片激情小说| 国产老女人精品免费视频| 一级黄色免费毛片| 婷婷亚洲综合五月天小说| 69天堂人成无码麻豆免费视频| 亚洲综合精品伊人久久| 全部免费a级毛片| 成人毛片100免费观看| 久久国产亚洲高清观看| 午夜两性色视频免费网站| 特级毛片免费播放| 亚洲欧洲日产国产综合网| 成人免费一级毛片在线播放视频| 国内成人精品亚洲日本语音 | 亚洲av丰满熟妇在线播放| 18勿入网站免费永久| 久久精品国产亚洲AV天海翼| 亚洲一级Av无码毛片久久精品| 老司机69精品成免费视频| 亚洲精品人成网在线播放影院| 亚洲AⅤ无码一区二区三区在线| a级片免费在线观看| 国产亚洲精品VA片在线播放| 亚洲一级特黄无码片| 久久精品免费全国观看国产| 狠狠热精品免费观看| 亚洲理论片中文字幕电影|