posts - 25, comments - 69, trackbacks - 0, articles - 2

          最近做一個(gè)基于J2EE的WEB項(xiàng)目,該項(xiàng)目的特點(diǎn)是查詢比較多,本來設(shè)計(jì)中打算用hibernate實(shí)現(xiàn)持久層,但是基于項(xiàng)目時(shí)間緊張和開發(fā)人員不熟悉hibernate而取消.于是想到了傳統(tǒng)的Dao,加上最近看了好多關(guān)于類反射的東西,于是自己寫了一個(gè)簡單的Dao,基本的方法很簡單,輸入sql語句/參數(shù)/,返回String二維數(shù)組(直接在頁面顯示).由于只是針對(duì)web顯示,所以在設(shè)計(jì)上加入了一些小技巧,例如數(shù)組的第一行是表頭信息,通過參數(shù)傳入,如果參數(shù)為null則根據(jù)dbms metadata來讀取,相關(guān)的api列表如下:

          其中以Simple開頭的查詢方法只支持單條查詢并直接返回結(jié)果,其打開和關(guān)閉連接等過程在內(nèi)部自動(dòng)實(shí)現(xiàn).以exec開頭的的方法支持多條查詢和update,支持事務(wù),要自己打開(init)和關(guān)閉(close)連接,下面是一個(gè)stuts actionbean里面的代碼片斷,是不是看起來很簡單呢:)

          ? Dao d = new Dao();
          ??String[][] result = null;
          ??String sql="select name,phone from users where schoolID=? and classID=?"
          ??result=d.simplyQuery(sql,
          ????new String[]{"姓名","電話號(hào)碼"},? //表頭
          ????new String[]{theForm.getSchoolID(),theForm.getClassID}?? //參數(shù)
          ????);
          ??request.getSession().setAttribute("xxxx..",result);

          Feedback

          # re: 自己寫了一個(gè)簡單的Dao  回復(fù)  更多評(píng)論   

          2006-04-10 09:35 by 壯士的爛筆頭:)
          暈,改了幾次上面的圖片都無法按原來的大小顯示:(

          # re: 自己寫了一個(gè)簡單的Dao  回復(fù)  更多評(píng)論   

          2006-04-10 09:50 by 劍事
          request.getSession().setAttribute("xxxx..",result);
          很錯(cuò)誤的用法

          # re: 自己寫了一個(gè)簡單的Dao  回復(fù)  更多評(píng)論   

          2006-04-10 09:53 by 壯士的爛筆頭:)
          為什么呢?說來聽聽

          # re: 自己寫了一個(gè)簡單的Dao  回復(fù)  更多評(píng)論   

          2006-04-10 10:23 by JustJava
          把result放到session中,什么時(shí)候關(guān)閉數(shù)據(jù)庫連接呢?

          # re: 自己寫了一個(gè)簡單的Dao  回復(fù)  更多評(píng)論   

          2006-04-10 10:27 by 壯士的爛筆頭:)
          放到session之前就已經(jīng)關(guān)閉掉了
          public String[][] simplyQuery(String sql,String[] titles,Object[] params)
          {
          try {
          this.init();
          return this.execSQL(sql,titles,params);
          } catch (Exception e) {
          // TODO Auto-generated catch block
          logger.error(e.getMessage());
          return null;
          }
          finally
          {
          this.close();
          }
          }

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 留坝县| 志丹县| 静宁县| 文登市| 松阳县| 伊吾县| 新民市| 定边县| 云林县| 都昌县| 达州市| 阿合奇县| 蛟河市| 九江县| 双城市| 莒南县| 常熟市| 柘荣县| 调兵山市| 永安市| 松溪县| 马鞍山市| 井冈山市| 武城县| 阜康市| 隆子县| 三门县| 五峰| 郑州市| 长汀县| 台北县| 永仁县| 龙井市| 黔西县| 通辽市| 南平市| 蓬溪县| 石屏县| 荃湾区| 仙游县| 武夷山市|