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

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

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

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

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
久久国产精彩视频| 精品国产户外野外| 久久成人一区二区| 国产精品一区二区久久久久| 国产亚洲精品一区二区| 日韩欧美在线视频| 国产美女久久精品| 欧美激情一区二区三级高清视频| 国产一区视频在线播放| 亚洲激情视频在线观看| 亚洲激情中文字幕| 国产精品盗摄久久久| 97不卡在线视频| 青青青国产精品一区二区| 欧美另类在线观看| 97香蕉久久超级碰碰高清版| 欧美一区视频在线| 欧美电影在线观看| 久久久视频免费观看| 久久精品国产99国产精品澳门| 国产亚洲精品成人av久久ww| 国产丝袜一区二区三区免费视频| 欧美中文在线视频| 国产精品h片在线播放| 久久精品久久精品亚洲人| 中文字幕最新精品| 欧美日韩美女在线观看| 国产精品自拍偷拍视频| 一区二区三区视频在线| 亚洲第一中文字幕| 欧美xxxx18国产| 精品国内产的精品视频在线观看| 最近的2019中文字幕免费一页| 国外成人在线视频| 欧美成人午夜激情| 97在线观看视频国产| 成人激情视频小说免费下载| 亚洲国产精品国自产拍av秋霞| 亚洲色图av在线| 亚洲国产三级网| 亚洲成人网在线| 亚洲国产精久久久久久久| 精品久久久久久久久久| 欧美日韩激情美女| 97免费视频在线播放| 欧美一区二区三区精品电影| 日韩美女福利视频| 亚洲欧美精品伊人久久| 26uuu亚洲伊人春色| 欧美多人乱p欧美4p久久| 国产美女被下药99| 成人有码视频在线播放| 精品日本美女福利在线观看| 欧美午夜影院在线视频| 国产视频精品在线| 欧美日韩xxx| 亚洲国产私拍精品国模在线观看| 国产欧美精品一区二区三区-老狼| 久久噜噜噜精品国产亚洲综合| 亚洲精品自拍偷拍| 欧美性受xxx| 国产精品免费小视频| 久久伊人精品一区二区三区| 国产精品福利片| 8x海外华人永久免费日韩内陆视频| 国产精品久久久久久久9999| 国产精品青青在线观看爽香蕉| 欧美日本亚洲视频| 操日韩av在线电影| 国产脚交av在线一区二区| 成人黄色av网| 国产亚洲精品高潮| 精品美女国产在线| 亚洲电影免费观看高清完整版在线| 成人午夜小视频| 久久久久久999| 欧美激情中文字幕乱码免费| 国内揄拍国内精品少妇国语| 亚洲伊人成综合成人网| 国精产品一区一区三区有限在线| 国产成人精品久久亚洲高清不卡| 国产91亚洲精品| 992tv成人免费视频| 欧美日韩免费网站| 久久精品国产亚洲7777| 久久精品国产视频| 色www亚洲国产张柏芝| 亚洲欧洲日产国码av系列天堂| 欧美三级免费观看| 久久免费高清视频| 精品爽片免费看久久| 成人久久精品视频| 超碰91人人草人人干| 国产午夜精品视频免费不卡69堂| 日韩欧美成人免费视频| 国产亚洲精品久久久久久777| 国产美女久久久| 正在播放欧美一区| 亚洲精品乱码久久久久久金桔影视| 日韩免费av在线| 国产午夜精品美女视频明星a级| 久久免费视频在线观看| 欧美极度另类性三渗透| 日韩欧美国产一区二区| 久久久噜噜噜久久久| 日韩中文综合网| 国产精品视频一区二区高潮| 国产精品成人一区| 国产成人综合精品| 久久中文精品视频| 色视频www在线播放国产成人| 中文字幕亚洲综合久久筱田步美| 亚洲男人天堂网站| 成人性生交大片免费看视频直播| 成人啪啪免费看| 91高清免费视频| 久久久免费精品| 丝袜情趣国产精品| 黄色成人在线免费| 97精品国产97久久久久久免费| 精品亚洲一区二区三区在线观看| 成人欧美在线视频| 不卡av日日日| 影音先锋欧美精品| 亚洲国产日韩欧美在线图片| 日韩欧美在线一区| 亚洲精品97久久| 最近2019年好看中文字幕视频| 欧美在线日韩在线| 97色在线视频观看| 91精品国产综合久久香蕉的用户体验| 日韩高清电影免费观看完整版| 欧美视频不卡中文| 亚洲天堂成人在线| 92裸体在线视频网站| 亚洲综合精品伊人久久| 精品高清一区二区三区| 日本精品视频网站| 国产精品视频免费观看www| 亚洲性生活视频在线观看| 欧美亚洲激情在线| 精品亚洲一区二区三区| 久久99热这里只有精品国产| 成人av番号网| 中文字幕亚洲专区| 亚洲福利视频久久| 国产精品成人aaaaa网站| 亚洲成年人在线播放| 色噜噜狠狠狠综合曰曰曰| 成人激情春色网| 欧美老女人www| 91久久在线视频| 精品高清一区二区三区| 久久精品91久久久久久再现| 欧美激情在线播放| 欧美日韩亚洲一区二区| 国产精品久久久久秋霞鲁丝| 亚洲美女视频网站| 欧美午夜精品伦理| 亚洲电影在线观看| 国产成人在线视频| 97精品在线观看| 国产精品丝袜白浆摸在线| 欧美有码在线观看视频|