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

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

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

    隨筆-20  評(píng)論-2  文章-0  trackbacks-0

    (一)

    開門見山.今天我要說的是不用HQL執(zhí)行SAVE和DELETE方法,用hibernate的executeQuery來執(zhí)行SQL

    其原理如下(從SessionFactory里獲得個(gè)Session,在調(diào)用session的connection方法,通過Statement來執(zhí)行靜態(tài)SQL,最后執(zhí)行executeQuery就可以了)具體如下:

    protected Session session = null; protected Transaction tr = null;

    String sql = "insert into as_dept2role(roleid,dept_id)value('"+roleId+"','"+deptId+"')"; session=HibernateSessionFactory.getSession();                                                                               

       session.beginTransaction();
    //獲取connection,執(zhí)行靜態(tài)SQL
    Statement state = session.connection().createStatement();
    state.executeQuery(sql);
    tr.commit(); session.close();

    當(dāng)然關(guān)于 關(guān)閉SESSION 這些方法我寫的簡(jiǎn)單些,主要是為了寫 執(zhí)行SQL這些方法

    對(duì)于刪除只要寫個(gè)刪除語句就可以了

    :Transaction tr = session.beginTransaction();

    * session.connection() 方法過時(shí) 用下面來代替 *
    DataSource ds= SessionFactoryUtils.getDataSource(getSessionFactory());
    conn=ds.getConnection();

    ============================================

    (二)

    public Object get(Class cls, String szId) {
    Object obj = this.getHibernateTemplate().get(cls, szId);
    return obj;
    }
    obj.getsessionFaction.opensession返回session


    Session session = dao.openSession();
    Connection conn = session.connection();
    List recordList = new ArrayList();

    StringBuffer sql = new StringBuffer();
    sql.append("select b.user_name, c.org_name ");
    sql.append("from orgmeetinglinkman a, am_user b, organization c ");
    sql.append("where a.login_name = b.login_name ");
    sql.append("and a.org_id = c.org_id ");

    PreparedStatement ps = conn.prepareStatement(sql.toString());
    ResultSet rs = ps.execu

    ============================================

    (三)

    public List findWithSQL(final String sql) {
       List list = (List) this.getHibernateTemplate().execute(
         new HibernateCallback() {
          public Object doInHibernate(Session session)
            throws SQLException, HibernateException {
           SQLQuery query = session.createSQLQuery(sql);
           query.addScalar("NX",new org.hibernate.type.StringType());
           List children = query.list();
           return children;
          }
         });
       return list;
    }

    /**
    * 查詢并返回結(jié)果集,結(jié)果集中的內(nèi)容已經(jīng)都轉(zhuǎn)為了字符串
    */
    public List<List<String>> findSql(final String sql) {
       // TODO Auto-generated method stub
       System.out.println("findSql---sql1----->"+sql);
       List<List<String>> mainObjList= (List<List<String>>) getHibernateTemplate().execute(new HibernateCallback() {

        public Object doInHibernate(Session session)
          throws HibernateException, SQLException {

        
         int n=-1;
         Connection con=null;
         PreparedStatement stmt=null;
         ResultSet rs=null;
        
         try
         {
         
          DataSource ds= SessionFactoryUtils.getDataSource(getSessionFactory());
          if(ds==null)
          {
           throw new SQLException("get dataSource is null");
          }
          con=ds.getConnection();
          System.out.println("findSql---sql2----->"+sql);
          stmt=con.prepareStatement(sql);
          rs=stmt.executeQuery();
         
         } catch (HibernateException e)
         {
          // TODO Auto-generated catch block
          e.printStackTrace();
         } catch (SQLException e)
         {
          // TODO Auto-generated catch block
          e.printStackTrace();
         }
        
         List<List<String>> list=new ArrayList<List<String>>();//每行為一個(gè)list
         try
         {
          ResultSetMetaData rsmd=rs.getMetaData();
          int colsNum=rsmd.getColumnCount();//取得列數(shù)
          int rsNum=0;
          while(rs.next())
          {
           rsNum++;
           System.out.println("rsNum==="+rsNum+" ");
           List<String> subList=new ArrayList<String> ();//每列的類型為string
           for(int i=1;i<=colsNum;i++)
           {
            System.out.println("\ti==="+i);
            //int type= rsmd.getColumnType(i);
            String columnType=getDataType(rsmd.getColumnType(i),rsmd.getScale(i));  
            String val="";
            if(columnType.equalsIgnoreCase("Date"))
            {
             Timestamp timest= rs.getTimestamp(i);
             if(timest!=null)
             {
              long times=timest.getTime();
              Date date=new Date(times);
              SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINA);
              val=df.format(date);
             }
            }
            else if(columnType.equalsIgnoreCase("Number"))
            {
             Object obj=rs.getObject(i);
             if(obj!=null)
             {
              int m=rs.getInt(i);
              val=Integer.toString(m);
             }
            }
            else if(columnType.equalsIgnoreCase("blob"))
            {
             val="不支持blob數(shù)據(jù)的讀取";
            }
            else if(columnType.equalsIgnoreCase("clob"))
            {
             val=getOracleClobField(rs, i);
            
            }
            else
            {
             val=rs.getString(i);
            }
            if(val==null)
            {
             val="";
            }
            subList.add(val);
           }
           if(subList.size()>0)
           {
            list.add(subList);
           }
          }
         }
         catch(Exception ex5)
         {
          ex5.printStackTrace();
          System.out.println("ex5.getMessage="+ex5.getMessage());
          list=null;
         }
         finally
         {
          try {
           if (rs != null) {
            rs.close();
            rs = null;
           }
          } catch (Exception e2) {
           // TODO: handle exception
           e2.printStackTrace();
           System.out.println("e2.getMessage="+e2.getMessage());
          }
          try {
           if (stmt != null) {
            stmt.close();
            stmt = null;
           }
          } catch (Exception e3) {
           // TODO: handle exception
           e3.printStackTrace();
           System.out.println("e3.getMessage="+e3.getMessage());
          }
          try {
           if (con != null) {
            con.close();
            con = null;
           }
          } catch (Exception e4) {
           // TODO: handle exception
           e4.printStackTrace();
           System.out.println("e4.getMessage="+e4.getMessage());
          }
         
         }
         return list;
        }

       });
       return mainObjList;
    }

    // String   columnType=getDataType(rmd.getColumnType(i),rmd.getScale(i));  
    private String getOracleClobField(ResultSet rset, int index)
         throws Exception
    {
         StringBuffer buffS = new StringBuffer();
         Clob clob = rset.getClob(index + 1);
         if(clob == null)
             return " ";
         Reader reader = clob.getCharacterStream();
         char buff[] = new char[1024];
         for(int len = 0; (len = reader.read(buff)) != -1;)
             buffS.append(buff, 0, len);
          return buffS.toString();
    }
        
    private   static   String   getDataType(int   type,int   scale)
    {  
       String   dataType="";  

       switch(type){  
        case   Types.LONGVARCHAR:   //-1  
         dataType="Long";  
          break;  
        case   Types.CHAR:         //1  
         dataType="Character";  
              break;  
        case   Types.NUMERIC:   //2  
         switch(scale)
         {  
             case   0:  
                 dataType="Number";  
                 break;  
             case   -127:  
                 dataType="Float";  
                 break;  
             default:  
                 dataType="Number";  
         }  
         break;  
        case   Types.VARCHAR:     //12  
         dataType="String";  
            break;  
        case   Types.DATE:     //91  
         dataType="Date";  
            break;  
        case   Types.TIMESTAMP:   //93  
         dataType="Date";  
            break;  
        case   Types.BLOB   :  
            dataType="Blob";  
            break;  
        default:  
            dataType="String";  
        }  
        return   dataType;
    }


    文章來源:http://blog.163.com/ccbobo_cat/blog/static/32099462200931511221288
    posted on 2009-04-15 23:22 C.B.K 閱讀(18791) 評(píng)論(1)  編輯  收藏

    評(píng)論:
    # kkk 2014-06-05 11:51 | jjj
    好好好  回復(fù)  更多評(píng)論
      

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 扒开双腿猛进入爽爽免费视频| 亚洲日韩在线观看免费视频| 国产偷国产偷亚洲高清人| 国产成人亚洲综合| 精品免费久久久久久久| 亚洲AV无码一区二区三区性色 | 免费少妇a级毛片| 免费视频一区二区| 亚洲乱码在线卡一卡二卡新区 | 亚洲人成人77777网站不卡| 凹凸精品视频分类国产品免费| 麻豆精品不卡国产免费看| 亚洲午夜成人精品无码色欲| 国产亚洲精品拍拍拍拍拍| 美女视频黄的全免费视频网站| 一级大黄美女免费播放| 四虎必出精品亚洲高清| 中文字幕亚洲一区二区三区| 免费影院未满十八勿进网站| 久久精品免费网站网| 亚洲人成图片网站| 五月天网站亚洲小说| 免费国产在线观看老王影院| 亚洲免费观看在线视频| aa在线免费观看| 亚洲av乱码中文一区二区三区| 亚洲美女激情视频| 激情综合色五月丁香六月亚洲| 特级淫片国产免费高清视频| 1000部无遮挡拍拍拍免费视频观看| 全黄A免费一级毛片| 亚洲人成欧美中文字幕| 亚洲制服中文字幕第一区| 亚洲色一色噜一噜噜噜| 日本无吗免费一二区| 91网站免费观看| 香港a毛片免费观看| 中文字幕一区二区三区免费视频 | 曰曰鲁夜夜免费播放视频| 日韩a级无码免费视频| 国产成人亚洲精品蜜芽影院|