afunms

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

          new framework(7)--build sql via reflect

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

             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)  編輯  收藏


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


          網站導航:
           

          My Links

          News

          留言簿(18)

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 左权县| 马公市| 佛学| 云龙县| 兴义市| 武宁县| 宜川县| 泉州市| 丰都县| 清水河县| 思茅市| 宜丰县| 龙里县| 秀山| 浙江省| 镇康县| 全州县| 从江县| 余庆县| 佛坪县| 册亨县| 邢台县| 神木县| 名山县| 凤山县| 分宜县| 永宁县| 鹤山市| 安化县| 云和县| 石景山区| 图木舒克市| 喀什市| 江津市| 阳原县| 通城县| 鄯善县| 正阳县| 安新县| 榆社县| 明光市|