afunms

          My Software,My Dream—Forge a more perfect NMS product.

          new framework(7)--build sql via reflect

          利用反射構成SQL語句,這樣,對于一般表的CURD,都可快速實現(xiàn)。

             protected String buildInsertSQL(ResultSetMetaData rsm,DtoInterface dto)
             
          {
                 String insertSql 
          = null;
                 
          try
                 
          {
                     StringBuffer sqlBuf 
          = new StringBuffer(50);
                     StringBuffer valueBuf 
          = new StringBuffer(50);
                     sqlBuf.append(
          "insert into ").append(table).append("(");
                     
          for(int i=1;i<=rsm.getColumnCount();i++
                     
          {
                         String methodName 
          = "get" + rsm.getColumnName(i).replaceAll("_"""); 
                         Method method 
          = lookupMethod(dtoClass.getMethods(), methodName);
                         
          if(method==null
                         

                             SysLogger.debug(
          "get" + rsm.getColumnName(i) + " does not exist"); 
                             
          continue;
                         }
           
                         sqlBuf.append(rsm.getColumnName(i)).append(
          ",");
                         valueBuf.append(
          "'").append(method.invoke(dto)).append("',");               
                     }

                     sqlBuf.delete(sqlBuf.length() 
          - 1, sqlBuf.length());
                     valueBuf.delete(valueBuf.length() 
          - 1, valueBuf.length());
                     sqlBuf.append(
          ")values(").append(valueBuf.toString()).append(")");
                     insertSql 
          = sqlBuf.toString();
                     SysLogger.debug(insertSql);
                 }

                 
          catch(Exception e)
                 
          {
                     SysLogger.error(
          "BaseDao.buildInsertSQL()",e);           
                 }

                 
          return insertSql;
             }

             
             
          protected String buildUpdateSQL(ResultSetMetaData rsm,DtoInterface dto)
             
          {
                 String updateSql 
          = null;
                 
          try
                 
          {
                     Method getId 
          = lookupMethod(dtoClass.getMethods(),"getId");
                     
          if(getId==null)
                     
          {
                         SysLogger.error(dtoClass.getClass().getName() 
          + ":getId method does not exist");
                         
          return null;
                     }

                     StringBuffer sqlBuf 
          = new StringBuffer(100);
                     sqlBuf.append(
          "update ").append(table).append(" set ");
                     
          for(int i=1;i<=rsm.getColumnCount();i++
                     
          {
                         
          if(rsm.getColumnName(i).equals("id")) continue;
                         
                         String methodName 
          = "get" + rsm.getColumnName(i).replaceAll("_"""); 
                         Method method 
          = lookupMethod(dtoClass.getMethods(), methodName);
                         
          if(method==null
                         

                             SysLogger.debug(
          "get" + rsm.getColumnName(i) + " does not exist"); 
                             
          continue;
                         }
                          
                         sqlBuf.append(rsm.getColumnName(i)).append(
          "='");
                         sqlBuf.append(method.invoke(dto)).append(
          "',");               
                     }

                     sqlBuf.delete(sqlBuf.length() 
          - 1, sqlBuf.length());           
                     sqlBuf.append(
          " where id='").append(getId.invoke(dto)).append("'");
                     updateSql 
          = sqlBuf.toString();
                     SysLogger.debug(updateSql);
                 }

                 
          catch(Exception e)
                 
          {
                     SysLogger.error(
          "BaseDao.buildUpdateSQL()",e);           
                 }

                 
          return updateSql;   
             }


           

          posted on 2007-05-07 22:33 afunms 閱讀(152) 評論(0)  編輯  收藏


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


          網站導航:
           

          My Links

          News

          留言簿(18)

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 肃宁县| 东源县| 柳州市| 电白县| 芮城县| 武功县| 汾西县| 慈利县| 禄劝| 五河县| 象州县| 大宁县| 布尔津县| 临朐县| 阳山县| 鲁山县| 津市市| 勐海县| 通山县| 社旗县| 平湖市| 宝清县| 临江市| 久治县| 平远县| 额尔古纳市| 武乡县| 黑水县| 赤城县| 宣恩县| 凤翔县| 泰和县| 镇原县| 建昌县| 老河口市| 六枝特区| 思茅市| 华坪县| 宜川县| 延长县| 惠水县|