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

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

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

    yxhxj2006

    常用鏈接

    統計

    最新評論

    hibernate查詢方法對比

    HQL查詢

    HQL是hibernate自己的一套查詢語言,于SQL語法不同,具有跨數據庫的優點。示例代碼:

    [java] 
    static void query(String name){ 
      Session s=null; 
      try{ 
       s=HibernateUtil.getSession(); 
        
       //from后面是對象,不是表名 
       String hql="from Admin as admin where admin.aname=:name";//使用命名參數,推薦使用,易讀。 
       Query query=s.createQuery(hql); 
       query.setString("name", name); 
        
       List<Admin> list=query.list(); 
        
       for(Admin admin:list){ 
        System.out.println(admin.getAname()); 
       } 
      }finally{ 
       if(s!=null) 
       s.close(); 
      } 
     } 
    適用情況:常用方法,比較傳統,類似jdbc。缺點:新的查詢語言,適用面有限,僅適用于Hibernate框架。


    對象化查詢Criteria方法:

    [java] 
    static void cri(String name,String password){ 
      Session s=null; 
      try{ 
       s=HibernateUtil.getSession(); 
        
       Criteria c=s.createCriteria(Admin.class); 
       c.add(Restrictions.eq("aname",name));//eq是等于,gt是大于,lt是小于,or是或 
       c.add(Restrictions.eq("apassword", password)); 
        
       List<Admin> list=c.list(); 
       for(Admin admin:list){ 
        System.out.println(admin.getAname()); 
       } 
      }finally{ 
       if(s!=null) 
       s.close(); 
      } 
     } 
    適用情況:面向對象操作,革新了以前的數據庫操作方式,易讀。缺點:適用面較HQL有限。


    動態分離查詢DetachedCriteria

    [java] 
    static List dc(DetachedCriteria dc) { 
     
      Session s = HibernateUtil.getSession(); 
      Criteria c = dc.getExecutableCriteria(s); 
      List rs = c.list(); 
      s.close(); 
      return rs; 
     } 

    [java]
    DetachedCriteria dc = DetachedCriteria.forClass(User.class); 
      int id = 1; 
      if (id != 0) 
       dc.add(Restrictions.eq("id", id)); 
      Date age = new Date(); 
      if (age != null) 
       dc.add(Restrictions.le("birthday", age)); 
      List users = dc(dc); 
      System.out.println("離線查詢返回結果:" + users); 

    適用情況:面向對象操作,分離業務與底層,不需要字段屬性攝入到Dao實現層。  缺點:適用面較HQL有限。


    例子查詢

    [java]
    static List example(User user) { 
      Session s = HibernateUtil.getSession(); 
      List<User> users = s.createCriteria(User.class).add( 
        Example.create(user)).list(); 
      // List<User> 
      // users2=s.createCriteria(User.class).add((Example.create(user)).ignoreCase()) 
      // .createCriteria("child").add((Example.create(user))).list(); 
      return users; 
     } 
    適用情況:面向對象操作。   缺點:適用面較HQL有限,不推薦。


    sql查詢

    [java]
    static List sql() { 
     
      Session s = HibernateUtil.getSession(); 
      Query q = s.createSQLQuery("select * from user").addEntity(User.class); 
      List<User> rs = q.list(); 
      s.close(); 
      return rs; 
     } 
    適用情況:不熟悉HQL的朋友,又不打算轉數據庫平臺的朋友,萬能方法   缺點:破壞跨平臺,不易維護,不面向對象。


    命名查詢

    [java]
    static List namedQuery(int id) { 
      Session s = HibernateUtil.getSession(); 
      Query q = s.getNamedQuery("getUserById"); 
      q.setInteger("id", id); 
      return q.list(); 
     } 

    [html]
    <?xml version="1.0" encoding="utf-8"?> 
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
     
    <hibernate-mapping> 
        <class name="com.sy.vo.User" table="user" catalog="news"> 
         
      
     
        </class> 
        <!-- 命名查詢:定義查詢條件 --> 
        <query name="getUserById"> 
         <![CDATA[from User where id=:id]]> 
        </query> 
        <!-- 命名查詢中使用sql,不推薦使用,影響跨數據庫 
        <sql-query name="getUserById2"> 
         <![CDATA[select * from User where ]]> 
        </sql-query> --> 
    </hibernate-mapping>

    posted on 2012-06-29 13:34 奮斗成就男人 閱讀(905) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 在线播放免费人成视频网站| 在线播放免费人成视频在线观看| 日韩亚洲翔田千里在线| 亚洲综合免费视频| 亚洲精品狼友在线播放| 亚洲人成网站观看在线播放| 思思99re66在线精品免费观看| 无码少妇精品一区二区免费动态 | 一个人看的免费高清视频日本| 亚洲人成在线免费观看| 亚洲AV无码一区二区三区DV| mm1313亚洲精品国产| 最近2019中文字幕mv免费看| 最近2019免费中文字幕视频三| 中文字幕免费视频精品一| 免费人成网上在线观看| 亚洲а∨精品天堂在线| 亚洲视频一区二区三区四区| 337p日本欧洲亚洲大胆精品555588| 亚洲国产精品国自产拍AV| 亚洲精品午夜国产VA久久成人| 亚洲欧洲日产国码高潮αv| 国产乱人免费视频| 国产精品二区三区免费播放心| 无码人妻精品一二三区免费| 毛片高清视频在线看免费观看| 亚洲毛片免费视频| 亚洲一区二区三区免费观看| 四虎免费影院ww4164h| 最近2019中文字幕免费直播| 99爱在线观看免费完整版| 久久国产精品免费观看| 免费精品一区二区三区第35 | 亚洲国产高清在线| 亚洲国产二区三区久久| 亚洲香蕉免费有线视频| 久久亚洲AV成人无码软件| 亚洲精品视频在线观看免费| 亚洲精品无码久久毛片波多野吉衣 | 亚洲精品美女久久久久9999| 亚洲图片校园春色|