ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频一区在线,青青在线视频一区二区三区,国产精品一区二区婷婷http://www.aygfsteel.com/realzar/category/9476.html皇家撒拉哥è¨zh-cnWed, 07 Mar 2007 10:23:37 GMTWed, 07 Mar 2007 10:23:37 GMT60Hibernate¾l¼åˆæŸ¥è¯¢è§£å†³æ–ÒŽ¡ˆhttp://www.aygfsteel.com/realzar/archive/2006/04/04/39137.htmlå¼€æºçˆ±å¥½è€?/dc:creator>å¼€æºçˆ±å¥½è€?/author>Tue, 04 Apr 2006 05:29:00 GMThttp://www.aygfsteel.com/realzar/archive/2006/04/04/39137.htmlhttp://www.aygfsteel.com/realzar/comments/39137.htmlhttp://www.aygfsteel.com/realzar/archive/2006/04/04/39137.html#Feedback0http://www.aygfsteel.com/realzar/comments/commentRss/39137.htmlhttp://www.aygfsteel.com/realzar/services/trackbacks/39137.html      现在sunåˆåŠ å…¥jdocentral.comå¼€å§‹ç€æ‰‹JDO2.0åQŒæƒ³æƒ³çœ‹½{‰å®ƒå‡ºå°ä»¥åŽž®†æ˜¯ä¸€ä¸ªæ€Žæ ·‹È€åЍäh心得场é¢åQŒè®©æˆ‘们拭目以待ã€?br />      
      用Hibernateæ¥æ“¾U‰|Œä¹…æ•°æ®éžå¸¸ç®€å•,在这里一些简å•的查询我会一½W”带˜q‡ï¼Œæœ¬æ–‡ç€é‡è¯´æ˜Žåœ¨¾l¼åˆæŸ¥è¯¢å…¼æœ‰åˆ†é¡µçš„æ—¶å€™æˆ‘的一些ç»éªŒï¼Œå¦‚æžœ¾|‘å‹è§‰å¾—我的æ–ÒŽ¡ˆ˜q˜æœ‰ä¸èƒö的地方,也请和我讨论åQŒæˆ‘çš„email:plateau_t@sina.com.
      
      ½W¬ä¸€éƒ¨åˆ†åQšHibernateæä¾›çš„æŸ¥è¯¢æŽ¥å£æˆ–其方法(此部分ä¸åšæ·±½IÓž¼Œè¯·å‚考hibernate手册åQ?br />      
       1。根æ®ID查询
    è¦ç”¨åˆ°Session接å£çš„loadæ–ÒŽ³•ã€?br />    load(Class theClass, Serializable id) 
    load(Class theClass, Serializable id, LockMode lockMode)
    load(Object object, Serializable id)  
    
       2。HQL语奘q›è¡ŒæŸ¥è¯¢
       
       2ã€? 利用Query接å£åQŒQueryç”±Session里的createQuery()æ¥äñ”生一个查è¯?br />        1)ä¸å¸¦å‚数的查询(˜q™ç±»æ¯”较½Ž€å•)
        Query query=session.createQuery("select user from User as user");
        2)另傿•°çš„æŸ¥è¯¢
        Query query=session.createQuery("select user from User as user where user.name=?");
        query.setString(0,name)//å‡è®¾nameä¸ÞZ¼ ˜q‡æ¥çš„傿•?br />        Query query=session.createQuery("select user from User as user where user.name=:name");
        query.setString("name",name)//å‡è®¾nameä¸ÞZ¼ ˜q‡æ¥çš„傿•ŠW?br />        (å¤šä¸ªå‚æ•°ä»¥æ­¤¾cÀLލ) 
        
        利用Session接å£çš„find查询
        find(String query) 
        find(String query, Object[] values, Type[] types) 
        find(String query, Object value, Type type)    å‡è¿”回list   
        �
        List list=session.find("select user from Users as user where user.name=?",name,Hibernate.STRING)
        List list=session.find("select user from Users as user where user.name=? and             user.pw=?",new Object[]{name,pw},new Type[]{Hibernate.STRING,Hibernate.STRING})
        
        {推è使用Query的方法进行查询}   
        
      ½W¬äºŒéƒ¨åˆ†åQšhibernate¾l¼åˆæŸ¥è¯¢è§£å†³æ–ÒŽ¡ˆÂ åQˆæ­¤éƒ¨åˆ†è¯¦ç»†å®žä¾‹è¯´æ˜ŽåQŒå¦‚有中‘³çš„地方请写信给我)         
      
       大家从第一部分å¯ä»¥çœ‹åˆ°åQŒå¸¦æœ‰å‚数的查询åQŒå¿…™åÖM‹É用到Query接å£,如上边:
        Query query=session.createQuery("select users from Users as users where users.name=?");
        query.setString(0,name)//å‡è®¾nameä¸ÞZ¼ ˜q‡æ¥çš„傿•ŠW Â Â Â?br />       但是在系¾lŸä¸­å¦‚何æ‰èƒ½å†™ä¸€ä¸ªå…¬ç”¨çš„æŸ¥å¯»æ–ÒŽ³•呢?咋一看,ä¼ég¹Žæ˜¯ä¸å¯ä»¥çš„ï¼Œå› äØ“æ¯ä¸€‹Æ¡æŸ¥è¯¢çš„傿•°ä¸ä¸€æ øP¼Œå‚数的数é‡ä¸ä¸€æ øP¼ˆå¦‚下代ç åQ‰ï¼Œé‚£ä¹ˆæˆ‘们如何æå–共性呢åQŸÂ Â Â?br />         Query query=session.createQuery("select users from Users as users where users.name=? and users.pw=?");
        query.setString(0,name)//å‡è®¾nameä¸ÞZ¼ ˜q‡æ¥çš„傿•ŠW Â?br />        query.setString(1,pw); 
       
      首先说明åQŒæˆ‘的解å†Ïx–¹æ¡ˆæ˜¯ä»ŽSeesion接å£çš„findæ–ÒŽ³•扑ֈ°å‡ºå£çš„,如下为Session接å£å¾—find()æ–ÒŽ³•之一åQ?br />        find(String query, Object[] values, Type[] types)  
      其中Object[]为存攑ւ数值的数组åQŒType[]为存攑ւ数类型的数组åQŒä»–们的™åºåºæ˜¯å’Œquery里“?â€Â çš„™åºåºæ˜¯ç›¸åŒçš„。那么我ä¸ÞZ»€ä¹ˆä¸ç”¨è¯¥findæ–ÒŽ³•å‘¢ï¼Œå› äØ“å¦‚æžœæœ‰åˆ†™å늚„情况åQŒé‚£ä¹ˆè¯¥æ–ÒŽ³•ž®†ä¸é€‚用ã€?br />    
      下é¢è¯¦ç»†è¦è¯´æ˜Žçš„解决æ–ÒŽ¡ˆåQ?br />      首先我想创å¾ä¸‰ä¸ªæ–°çš„对象åQšParas.javaåQˆå‚数对象) ParasList.javaåQˆå‚数集åˆå¯¹è±¡ï¼‰HQuery.java
     åQˆæ„Ÿè°¢æˆ‘çš„åŒäº‹camelæä¾›æ³¨é‡Šè‰¯å¥½çš„代ç ï¼‰
     1。Paras.javaåQˆå‚数对象)
    
  package com.ifreeway.homegrown.testing.waf;
  
  /**
   *
   * <p>Title:定义一个sql语å¥çš„æ¡ä»¶å‚æ•°ç±»Â </p>
   * <p>Description: å¯ä»¥ä½¿ç”¨æœ‰åºçš„傿•°é›†åˆä¼ é€ç»™sql/hql语å¥Â </p>
   * <p>Copyright: Copyright (c) 2003</p>
   * <p>Company: ifreeway</p>
   * @author camel
   * @version 1.0
   */
  
  public class Paras {
   /**
    *Â å‚æ•°åç§°
    */
   private Object pName;
   /**
    *Â å‚æ•°¾cÕdž‹¾~–ç åQŒäºŽjava.sql.types中的¾cÕdž‹ä¿æŒä¸€è‡?br />    */
   private int typeNo;
  
   public Object getPName() {
    return pName;
   }
   public void setPName(Object pName) {
    this.pName = pName;
   }
   public int getTypeNo() {
    return typeNo;
   }
   public void setTypeNo(int typeNo) {
    this.typeNo = typeNo;
   }
  }  
 
 2。ParasList.javaåQˆå‚数集åˆå¯¹è±¡ï¼‰Â 
  package com.ifreeway.homegrown.testing.waf;
  
  import java.util.ArrayList;
  
  /**
   *
   * <p>Title:Â å‚æ•°é›†åˆ¾c?lt;/p>
   * <p>Description: ž®è£…sql/hqlçš„å‚æ•°åˆ°è¯¥é›†åˆç±»åQŒä¾¿äºŽå¤„ç†å’Œä¼ é€?lt;/p>
   * <p>Copyright: Copyright (c) 2003</p>
   * <p>Company: ifreeway</p>
   * @author camel
   * @version 1.0
   */
  
  public class ParaList extends ArrayList {
  
    /**
     * 在指定佾|®æ·»åŠ ä¸€ä¸ªå‚æ•°å¯¹è±?br />     * @param indexåQšå‚数的索引å€?br />     * @param påQšéœ€è¦åŠ å…¥çš„å‚æ•°å¯¹è±¡
     */
    public  void addParas(int index,Paras p){
        super.add(index,p);
    }
  
    /**
     * 在集åˆçš„æœ€åŽä½¾|®æ·»åŠ ä¸€ä¸ªå‚æ•°å¯¹è±?br />     * @param påQšéœ€è¦åŠ å…¥çš„å‚æ•°å¯¹è±¡
     */
    public void addParas(Paras p){
      super.add(p);
    }
  
    /**
     * å–得指定ä½ç½®çš„傿•°å¯¹è±?br />     * @param indexåQšå‚数的索引å€?br />     * @returnåQšå‚数对è±?br />     */
    public Paras getParas(int index){
        return (Paras)super.get(index) ;
    }
    /**
     * å–å¾—æŒ‡å®šå‚æ•°çš„烦å¼?br />     * @param påQšå‚数对è±?br />     * @returnåQšå‚数烦å¼?br />     */
    public int indexofParas(Paras p){
       return super.indexOf(p) ;
    }
  
    /**
     * 从集åˆä¸­åŽÀLŽ‰ä¸€ä¸ªæŒ‡å®šçš„å‚æ•°å¯¹è±¡
     * @param indexåQšå‚数烦å¼?br />     */
    public void removeParas(int index){
      super.remove(index) ;
    } 
  
  }  
 3。HQuery.java
  package com.ifreeway.homegrown.testing.waf;
  
  
  /**
   *
   * <p>Title: HQL的语å¥å°è£…ç±»</p>
   * <p>Description: 该对象å°è£…HQL的查询语å¥ï¼Œå‚数集åˆåQŒæŽ’åºå‚敎ͼŒåˆ†ç»„傿•°åQŒå•™åµè“v始地å€Â Â </p>
   * <p>Copyright: Copyright (c) 2003</p>
   * <p>Company:ifreeway </p>
   * @author camel
   * @version 1.0
   */
  
  public class HQuery {
  
    /**
     * HQL查询语å¥
     */
    private String queryString;
    /**
     *Â å‚æ•°é›†åˆå¯¹è±¡
     */
    private ParaList paralist;
    /**
     * 排åºå­—段
     */
    private String orderby;
    /**
     * 分组字段
     */
    private String groupby;
    /**
     * 分页起始查询地å€
     */
    private int pageStartNo;
  
    /**
     * å–得一个Hibernateçš„Query对象
     * @returnåQšQuery对象
     */
    public String getQueryString() {
      return queryString;
    }
  
    /**
     * 讄¡½®ä¸€ä¸ªHQL查询字符ä¸?br />     * @param queryStringåQšæŸ¥è¯¢å­—½W¦ä¸²
     * 
     */
    public void setQueryString(String queryString) {
   
     this.queryString =queryString;
  
    }
  
    /**
     * å–得傿•°é›†åˆå¯¹è±¡
     * @returnåQšå‚数集åˆå¯¹è±?br />     */
    public ParaList getParalist() {
      return paralist;
    }
  
    /**
     * 讄¡½®å‚数集åˆå¯¹è±¡
     * @param paraliståQšå‚数集åˆå¯¹è±?br />     */
    public void setParalist(ParaList paralist) {
      this.paralist = paralist;
    }
  
    /**
     * å–得排åºå­—段
     * @returnåQšæŽ’åºå­—ŒD?br />     */
    public String getOrderby() {
      return orderby;
    }
  
    /**
     * 讄¡½®æŽ’åºå­—段
     * @param orderby
     */
    public void setOrderby(String orderby) {
      this.orderby = orderby;
    }
  
    /**
     * å–得分组字段
     * @return
     */
    public String getGroupby() {
      return groupby;
    }
  
    /**
     * 讄¡½®åˆ†ç»„字段
     * @param groupby
     */
    public void setGroupby(String groupby) {
      this.groupby = groupby;
    }
  
    /**
     * å–å¾—™åµè“v始地å€
     * @return
     */
    public int getPageStartNo() {
      return pageStartNo;
    }
  
    /**
     * 讄¡½®™åµè“v始地å€
     * @param pageStartNo
     */
    public void setPageStartNo(int pageStartNo) {
      this.pageStartNo = pageStartNo;
    }
  } 
  
 上é¢ä¸‰ä¸ªå¯¹è±¡çš„å…³¾pÀL˜¯åQ?br /> 
 用Parasæ¥è£…è½½æ¯ä¸€ä¸ªæŸ¥è¯¢å‚æ•?br />  Paras paras=new Paras();
  paras.setPName(...);
  paras.setTypeNo(...);
Â ç„¶åŽæ”‘Öœ¨ParasListä¸?br />  ParasList paraslist=new ParasList();
  paraslist.add(paras)
Â æœ€åŽæŠŠå¡«å……ä»¥åŽçš„ParasList集刾l™HQuery  
  HQuery hquery=new HQuery();
  hquery.setParalist(paraslist);
  
Â å…ˆé¢æˆ‘们写一个公用查å¯ÀL–¹æ³•,æ¥å®žçŽ°æˆ‘ä»¬çš„¾l¼åˆæŸ¥è¯¢åQ?br /> 
 /**
  *
  *  ¾l¼åˆæŸ¥è¯¢åQŒé¦–先实例化HQuery
  * @see com.ifreeway.homegrown.testing.common.waf.DBHandler#find(com.ifreeway.homegrown.testing.common.waf.HQuery)
  */
 public List find(HQuery _query) throws HibernateException {
  List itr = null;
  try {
   StringBuffer query_str = new StringBuffer(_query.getQueryString());
   //是å¦è¦æŽ’åº?br />   if (_query.getOrderby() != null) {
    query_str.append(_query.getOrderby());
   }
   //是å¦è¦åˆ†¾l?br />   if (_query.getGroupby() != null) {
    query_str.append(_query.getGroupby());
   }
   Session session = getSession();
   Query query = session.createQuery(query_str.toString());
   if (_query.getParalist() != null) {
    List list = _query.getParalist();
    for (int i = 0; i < list.size(); i++) {
     Paras param = (Paras) list.get(i);
     switch (param.getTypeNo()) {//æ­¤å¤„è¦æ ¹æ®å‚数类型的增加è¦å¢žåŠ ç›¸åº”çš„â€œcaseâ€?br />      case Types.VARCHAR :
       query.setString(i, param.getPName().toString());
       break;
      case Types.INTEGER :
       query.setInteger(
        i,
        ((Integer) param.getPName()).intValue());
       break;
      case Types.DATE :
       query.setDate(i, (java.sql.Date) param.getPName());
       break;
      case Types.DOUBLE :
       query.setDouble(
        i,
        ((Double) param.getPName()).doubleValue());
       break;
      case Types.BOOLEAN :
       query.setBoolean(
        i,
        ((Boolean) param.getPName()).booleanValue());
       break;
      case Types.CHAR :
       query.setCharacter(
        i,
        ((Character) param.getPName()).charValue());
       break;
      case Types.JAVA_OBJECT :
       query.setEntity(i, (BaseModel) param.getPName());
       break;
     }
    }
   }
   //是å¦å­˜åœ¨åˆ†é¡µåQŒå½“_query.getPageStartNo()==0是ä¸åˆ†é¡µ
   if (_query.getPageStartNo() != 0) {
    int pageno = _query.getPageStartNo();
    query.setFirstResult((pageno - 1) * Constants.RECORD_PER_PAGE);
    query.setMaxResults((pageno) * Constants.RECORD_PER_PAGE);
   }
   itr = query.list();
   closeSession();
  } catch (Exception e) {

  }
  return itr;
 } 
    
      好了一旦我们åšå¥½äº†ä¸Šè¾¹çš„工作,查询å¯ÒŽˆ‘们æ¥è¯´å°†æ˜¯å¾ˆå®ÒŽ˜“的一件事情,而且å¯ä»¥è¾‘Öˆ°å…¬ç”¨åQŒæ˜¯ä¸æ˜¯çœäº†è®¸å¤šåŠ›æ°”åQŸä¸‹é¢æˆ‘ž®†å®žä¾‹åŒ–ä¸€ä¸ªä¾‹å­æ¥˜q›ä¸€æ­¥è¯´æ˜Žï¼š
      
      例å­åQ?br />      HQuery hquery=HQuery();
      hquery.setQueryString("select users from Users as users where users.name=? and users.sex=?");
      hquery.setOrderby("order by users.age desc");
      
      //如果è¦åˆ†™åµï¼ŒæŠŠå½“å‰é¡µcurpage传递给hquery
      hquery.setPageStartNo(curpage);
      
      //å®žä¾‹åŒ–å‚æ•ŽÍ¼Œæœ¬ä¾‹ä¸ÞZ¸¤ä¸ªå‚æ•?br />      Paras paras1=new Paras();
      paras1.setPName(name);
      paras1.setTypeNo(Types.VARCHAR);
      
      Paras paras2=new Paras();
      paras2.setPName(sex);
      paras2.setTypeNo(Types.INTEGER);
      
      ParasList paraslist=new ParasList();
      paraslist.add(paras1);
      paraslist.add(paras2);//注愙åºåº
      
      hquery.setParalist(paraslist);
      
      //好了åQŒåšå¥½å‡†å¤‡å·¥ä½œï¼Œè°ƒç”¨æŸ¥å¯»æ–ÒŽ³•得到¾l“æžœ
      List list=find(hquery);


]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÒËÀ¼ÏØ| ÐÂÃñÊÐ| ¹âÔóÏØ| ÇìÑôÊÐ| ½¨Æ½ÏØ| ãÏÖÐÊÐ| ÍòÈ«ÏØ| Ç±É½ÏØ| ÂÞÆ½ÏØ| ÓÜÉçÏØ| Ïå·ÚÏØ| ÂÞ³Ç| ³£ÖÝÊÐ| °¢Â³¿Æ¶ûÇ߯ì| ÂÌ´ºÏØ| ²áºàÏØ| ¹ÅÝþÏØ| ãÏÖÐÊÐ| ¶´¿ÚÏØ| Ì©°²ÊÐ| ÔÞ»ÊÏØ| ÈÕÍÁÏØ| °ÙÉ«ÊÐ| ¹ãµÂÏØ| ·áÔ­ÊÐ| ÄÏÑôÊÐ| ºôÂ×±´¶ûÊÐ| ÔæÇ¿ÏØ| ÁúÃÅÏØ| ²×Ô´| ÇàÉñÏØ| аͶû»¢×óÆì| ÈÚË®| »¸Ì¨ÏØ| Ë«Á÷ÏØ| ¿â¶ûÀÕÊÐ| Èç¶«ÏØ| ÀÖÖÁÏØ| ËÄ´¨Ê¡| º£Ô­ÏØ| ·ðѧ|