亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

hibernate項目的HQL(SQL區別、Select語句、返回list、map、object數組與單個對象)筆記整理

2019-11-10 18:31:41
字體:
來源:轉載
供稿:網友

HQL語句

hibernate配備了一種非常強大的查詢語言,這種語言看上去很像SQL。但是不要被語法結構 上的相似所迷惑,HQL是非常有意識的被設計為完全面向對象的查詢,它可以理解如繼承、多態 和關聯之類的概念。

HQL: Hibernate Query Language.  映射配置的持久化類以及其屬性。是一種面向對象的查詢語言。

SQL:數據庫表。主題是表,對大小寫不敏感。

 

HQL語句形式:

Select   … from  ….   Where … group by…  having… order by…

serlect..對象中的屬性 from該對象 where

 

特點:  

 1,與SQL相似,SQL中的語法基本上都可以直接使用。  

 2,SQL查詢的是表和表中的列;HQL查詢的是對象與對象中的屬性。  

 3,HQL的關鍵字不區分大小寫,java類名與屬性名是區分大小寫的。  

 4,SELECT可以省略.  

 

Org.hibernate.Query接口

1. Query接口有執行查詢方法

2.      Query接口支持方法鏈編程,使得程序代碼方便簡潔。執行完畢以后可以調用別的方法。

 

 

Query實例創建

1. 通過session的createQuery()方法創建Query實例。

2.      createQuery方法包含一個HQL語句參數,createQuery(hql)。就是要執行的查詢語句。

3.      執行查詢。

 

Query查詢

1.  Query接口的list()方法執行查詢。

2.  List方法返回的結果數據類型為java.util.List,List中存放符合查詢條件的持久化對象。

實體類代碼:

/*

 * 不需要更改

 * 屬性

 * newsid  newstitle author

 * content pubtime  newspic

 * newsTypebean 關聯對象

 * */

public classNewsBean {

  @Override

  public String toString() {

  /* return"NewsBean [newsid=" +newsid + ", newstitle="+ newstitle

         +", author=" + author + ", content=" + content + ",pubtime="

         +pubtime + ", typeid=" +typeid + ", newspic="+ newspic + "]";*/

   

    return "NewsBean [newsid="+ newsid+ ", newstitle=" + newstitle

    +", author=" + author+ ", content=" + content+ ", pubtime="

    +pubtime+ ", newspic=" + newspic+ "]";

   

  }

  PRivate int newsid;

  private Stringnewstitle;

  private Stringauthor;

  private Stringcontent;   //存儲的是文本的路徑

  private Stringpubtime;   //默認格式為'0000-00-00 00:00'

// privateint typeid;

  private Stringnewspic;   //存儲的是圖片的路徑

  private NewstypeBeannewsTypebean; 

 

  public NewstypeBeangetNewsTypebean() {

    return newsTypebean;

  }

  public voidsetNewsTypebean(NewstypeBean newsTypebean) {

    this.newsTypebean = newsTypebean;

  }

  public int getNewsid() {

    return newsid;

  }

  public void setNewsid(int newsid) {

    this.newsid = newsid;

  }

  public String getNewstitle() {

    return newstitle;

  }

  public void setNewstitle(Stringnewstitle) {

    this.newstitle = newstitle;

  }

  public String getAuthor() {

    return author;

  }

  public void setAuthor(Stringauthor) {

    this.author = author;

  }

  public String getContent() {

    return content;

  }

  public void setContent(Stringcontent) {

    this.content = content;

  }

  public String getPubtime() {

    return pubtime;

  }

  public void setPubtime(Stringpubtime) {

    this.pubtime = pubtime;

  }

/* publicint getTypeid() {

    returntypeid;

  }

  publicvoid setTypeid(int typeid) {

    this.typeid= typeid;

  }*/

  public String getNewspic() {

    return newspic;

  }

  public void setNewspic(Stringnewspic) {

    this.newspic = newspic;

  }

  public NewsBean() {

    super();

   

  }

  public NewsBean(Stringnewstitle,String newspic,

      int newsid,String pubtime ){

    super();

    this.newstitle = newstitle;

    this.newspic = newspic;

    this.newsid = newsid;

 

    this.pubtime = pubtime;

  }

  //構造方法

  public NewsBean(int newsid, Stringnewstitle, String author,

      Stringcontent, String pubtime,  String newspic){

    super();

    this.newsid = newsid;

    this.newstitle = newstitle;

    this.author = author;

    this.content = content;

    this.pubtime = pubtime;

  // this.typeid = typeid;

    this.newspic = newspic;

  }

  //構造方法

  public NewsBean(Stringnewstitle, String author, String content,

      Stringpubtime, String newspic) {

    super();

    this.newstitle = newstitle;

    this.author = author;

    this.content = content;

    this.pubtime = pubtime;

  // this.typeid = typeid;

    this.newspic = newspic;

  }

}

測試類代碼:

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import entity.NewsBean;

import util.HibernateSessionFactory;

 

publicclassNewsBeanTest {

 

   private Sessionsession=null;//創建session,org.hibernate.Session

  

  

   //創建一個test方法

   @Test

   publicvoid testnewsbean(){

      //編寫執行查詢的語句

      Stringsql="from NewsBean";

      //創建query實例對象

      Queryquery=session.createQuery(sql);//import org.hibernate.Query

      //query.list();//查詢結果list集合,符合條件的實例對象。

      //接受返回的結果,import java.util.List

      List<NewsBean>news=query.list();

      //測試,在控制臺打印測試

      for(NewsBeannewsBean:news){

         System.out.println(newsBean);//

      }

     

   }

   @Before

   publicvoid setUp() throws Exception {

      //獲得session

      session=HibernateSessionFactory.getSession();

     

   }

 

   @After

   publicvoid tearDown() throws Exception {

      //使用完畢后要關閉session

      session.close();

   }

}

 運行結果:

HQL:需要from語句

SQL:需要select和from語句

 

(1)          HQL最簡形式

(2)          From指定了HQL查詢主體——持久化類及其屬性

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import entity.NewsBean;

import entity.NewstypeBean;

import util.HibernateSessionFactory;

 

public classNewsBeanTest {

   private Session session=null;//創建session,org.hibernate.Session

 

   //from子句查詢持久化類,把關聯的類詳細信息也顯示出來

   @Test

   public void fromTest(){

      //編寫執行查詢的語句

      String sql="from NewsBean";

      //創建query實例對象

      Query query=session.createQuery(sql);//import org.hibernate.Query

      //query.list();//查詢結果list集合,符合條件的實例對象。

      //接受返回的結果,import java.util.List

      Listnews=query.list();

   //測試,在控制臺打印測試

      for(NewsBean newsBean:news){

   // System.out.println(newsBean);

   //獲取關聯對象的信息,先打印關聯對象的名稱

//獲取關聯對象的信息,如果不打印關聯對象的信息,則不會查詢兩次,只查詢一次。就是只查詢新聞

         System.out.println("新聞頭條:"+newsBean.getNewstitle()+",作者:"+newsBean.getAuthor()+",新聞類別名稱:"+newsBean.getNewsTypebean().getTypename());

      }    

   }

   @Before

   public void setUp() throws Exception {

      //獲得session

      session=HibernateSessionFactory.getSession();    

   }

   @After

   public void tearDown() throws Exception {

      //使用完畢后要關閉session

      session.close();

   } 

}

結果:成功地找出,找了兩次 

關于全限定名。

1.       不需要引入持久化類的全限定名,直接引入類名

2.       是auto-import(自動引入)缺省情況。方便,符合編程習慣

 

全限定名:from com.imooc.model.Seller

直接使用類名就可以了:from Seller,方便快捷。常用

 

From子句中別名的使用

1.  對查詢的類指定別名

2.  在HQL語句其他部分通過別名引用該類

3.  別名命名習慣(嚴格要求,參考java命名習慣,保證可讀性)

如:from Seller 

 別名:from seller或者s,全小寫,一樣的字母

(1)//別名不對查詢結果有任何的變化

String sql="from News as newsbean ";

可以去掉as等價于

String sql=”from News  news”;

 

(2)多個持久化類可以用逗號隔開

String sql="from News as newsbean ,Type as type";

可以去掉as等價于

String sql=”from News  n,type t”;

Select 子句關于返回Object數組和單個對象整理:

代碼:

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import entity.NewsBean;

import util.HibernateSessionFactory;

 

public class TestNewsObject {

       private Session session=null;//創建session,org.hibernate.Session

       //做一個循環打印信息,用object[]返回查詢結果

       @Test

       public void testObject(){

      //(1)當查詢只是一個屬性的時候,如果用for循環打印會報錯,原因是如果只查詢一個屬性字段,他就是對象而不是obj數組。

              String hql="select n.newsid,n.newstitle,n.author from NewsBean n";

              //創建query實例對象

              Query query=session.createQuery(hql);//import org.hibernate.Query

              //接受返回的結果,import java.util.List

              Listlist=query.list();

              //測試,在控制臺打印測試

              for(Object[] objs:list){

                     System.out.println("newsid:"+objs[0]);//顯示信息

                     System.out.println("newstitle:"+objs[1]);

                     System.out.println("author:"+objs[2]);

              }

       }

       @Before

       public void setUp() throws Exception {

              //獲得session

              session=HibernateSessionFactory.getSession();

       }

       @After

       public void tearDown() throws Exception {

              //使用完畢后要關閉session

              session.close();

       }

 

}

運行結果:

(2)單個字段的時候,就不是object數據,而是一個對象。

@Test

   public void testObject2(){

      //String hql="select n.newsid,n.newstitle,n.author from NewsBean n";

      String hql="select n.newstitle from NewsBean n";

      //創建query實例對象

      Query query=session.createQuery(hql);//import org.hibernate.Query

      //接受返回的結果,import java.util.List

      Listlist=query.list();

      //測試,在控制臺打印測試

      for(Object objs:list){

      // System.out.println("newsid:"+objs[0]);

         System.out.println("newstitle:"+objs);

      // System.out.println("author:"+objs[2]);

      }

   }

 

 

//查詢一個的時候,返回的是對象類型,而不是對象數組,

Select  n.name from news n;

注明:別名對后期排查有用,養成習慣。

List形式返回

1,        select子句中使用new  list指定

   //list方法

   @Test

   public void testObject(){

      String hql="select new list(n.newsid,n.newstitle,n.author)from NewsBean n";

      //創建query實例對象

      Query query=session.createQuery(hql);//import org.hibernate.Query

      //接受返回的結果,import java.util.List

      List<<u>List> list2=query.list();

      //測試,在控制臺打印測試

      for(List list:list2){

         System.out.println("newsid:"+list.get(0));

         System.out.println("newstitle:"+list.get(1));    System.out.println("author:"+list.get(2));

      }

 

   }

以Map形式返回

1.    select語句語句中使用new map指定

2.    key值為索引值,字符串類型

 

//使用map方法

   //使用map方法

   @Test

   public void testMap(){

      String hql="select new map(n.newsid,n.newstitle,n.author as author)from NewsBean n";

      //創建query實例對象

      Query query=session.createQuery(hql);//import org.hibernate.Query

      List<<u>Map> maps=query.list();

      for(Map mapss:maps){

         System.out.println("name_map:"+mapss.get("0"));

         System.out.println("newstitle_map:"+mapss.get("1"));

         System.out.println("author_map:"+mapss.get("author"));//通過別名來獲取

      }

 

   }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品爽黄69天堂a| 在线看福利67194| 粉嫩老牛aⅴ一区二区三区| 中文一区二区视频| 欧美激情亚洲国产| 国产精品视频1区| 日本乱人伦a精品| 日本欧美国产在线| 日韩av免费在线| 久久伊人免费视频| 精品欧美一区二区三区| 97不卡在线视频| 亚洲国产精品人人爽夜夜爽| 九九热这里只有在线精品视| 精品国产一区久久久| 国产精品高潮视频| 亚洲国语精品自产拍在线观看| 57pao国产精品一区| 国产精品久久久久久超碰| 97久久精品视频| 亚洲福利视频免费观看| 中国日韩欧美久久久久久久久| 97国产在线视频| 欧美一级在线播放| 国产丝袜一区二区| 亚洲精品99久久久久中文字幕| 日韩成人在线视频观看| 国产精品高潮在线| 国产成人一区三区| 国产精品无av码在线观看| 成人福利视频在线观看| 亚洲欧美日韩高清| 成人久久久久爱| 一区二区三区视频免费在线观看| 亚洲美女av电影| 日韩精品免费在线| 国产午夜精品久久久| 久久成人精品电影| 亚洲毛片在线观看.| 成人国产精品一区二区| 国产一区二区丝袜高跟鞋图片| 九九热这里只有在线精品视| 亚洲摸下面视频| 日韩欧美亚洲国产一区| 国产日韩在线免费| 日韩成人在线视频| 98视频在线噜噜噜国产| 欧美尺度大的性做爰视频| 久久精彩免费视频| 久久精品99无色码中文字幕| 国产色婷婷国产综合在线理论片a| 日韩av免费在线看| 久久久av免费| 97精品国产97久久久久久| 亚洲国产精品成人av| 成人精品视频久久久久| 亚洲视频在线观看视频| 国产精品中文字幕在线| 亚洲欧洲一区二区三区在线观看| 亚洲欧美日韩中文在线| www.亚洲一二| 国产精品女人网站| 国产成人精品在线视频| 亚洲欧美日韩成人| 91精品国产免费久久久久久| 久久久久成人网| 国产精品∨欧美精品v日韩精品| 亚洲黄色成人网| 国产精品高清免费在线观看| 亚洲免费人成在线视频观看| 国产精品视频自在线| 538国产精品视频一区二区| 国产在线观看精品一区二区三区| 欧美激情第三页| 国产精品一二三视频| 国产69久久精品成人看| 国产亚洲精品美女久久久| 中文字幕欧美专区| 在线观看国产精品91| 日产日韩在线亚洲欧美| 久久久综合av| 亚洲成人网在线观看| 亚洲性av在线| 午夜精品蜜臀一区二区三区免费| 亚洲成人久久电影| 成人h猎奇视频网站| 久久激情五月丁香伊人| 欧美巨乳美女视频| 日韩免费在线电影| 国产97在线视频| 青草成人免费视频| 91久久精品美女高潮| 欧美日韩国产成人在线观看| 国产精品va在线播放我和闺蜜| 欧美成人精品在线播放| 成人妇女淫片aaaa视频| 欧美老妇交乱视频| 中日韩美女免费视频网址在线观看| 91九色综合久久| 欧美一区二区三区免费观看| 久久精品国产成人| 91麻豆国产精品| 中日韩美女免费视频网址在线观看| 亚洲男子天堂网| 国产一区二区视频在线观看| 538国产精品一区二区免费视频| 欧美成人sm免费视频| 欧美色欧美亚洲高清在线视频| 国产精品久久久久久久app| 亚洲欧洲在线视频| 欧美精品福利视频| 欧美激情精品久久久久久久变态| 亚洲理论在线a中文字幕| 最近2019中文字幕第三页视频| 国内精品久久久| 精品视频在线播放色网色视频| 日韩精品在线视频美女| 91免费高清视频| 久久久极品av| 国产精品久久久久久av下载红粉| 日韩在线观看网站| 欧美日韩国产精品一区二区三区四区| 国产va免费精品高清在线观看| 国产精品va在线播放我和闺蜜| 亚洲国产日韩欧美在线动漫| 久久精品2019中文字幕| 亚洲精品一区二区三区不| 亚洲国产成人91精品| 91精品国产91久久久久久久久| 国产精品入口免费视| 成人免费大片黄在线播放| 亚洲精品国产精品国产自| 国产一区二区三区在线看| 国产精品老女人精品视频| 国产精品久久久久久av| 欧美在线视频观看| 国产精品永久免费观看| 国产精品免费视频久久久| 色综合视频一区中文字幕| 亚洲激情视频在线观看| 91精品国产自产在线老师啪| 欧美性xxxx极品高清hd直播| 亚洲人成网站777色婷婷| 亚洲精品日韩久久久| 一区二区三区国产视频| 97av在线影院| 日本a级片电影一区二区| 日韩网站免费观看| 精品亚洲一区二区三区在线观看| 色婷婷av一区二区三区在线观看| 欧美三级免费观看| 蜜臀久久99精品久久久久久宅男| 在线精品国产成人综合| 日韩av理论片| 国产亚洲精品美女| 国产精品视频资源| 国外成人在线播放| 久久亚洲精品国产亚洲老地址| 色噜噜狠狠狠综合曰曰曰88av| 久久精品国产v日韩v亚洲| 成人av.网址在线网站| 久久久视频在线| 欧美另类极品videosbest最新版本| 久久国产精品影视|