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

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

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

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

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
91精品国产高清久久久久久91| 国产不卡一区二区在线播放| 久久久久九九九九| 日本一区二区在线播放| 日韩精品在线免费| 国产精彩精品视频| 伊人久久久久久久久久| 亚洲激情免费观看| 最近2019中文免费高清视频观看www99| 欧美精品精品精品精品免费| 亚洲午夜精品久久久久久性色| 亚洲欧美视频在线| 亚洲国产成人精品电影| 欧美性猛交视频| 亚洲欧美精品中文字幕在线| 亚洲伊人一本大道中文字幕| 日韩中文字幕在线精品| 91成人福利在线| 成人午夜在线视频一区| 亚洲色图17p| 高清欧美电影在线| 日韩av中文字幕在线免费观看| 欧美www在线| 亚洲黄色av女优在线观看| 日韩av手机在线观看| 欧美性20hd另类| 亚洲r级在线观看| 久久精品中文字幕电影| 久久精品视频亚洲| 精品免费在线观看| 亚洲三级黄色在线观看| 国产99在线|中文| 亚洲最大的网站| 久久精品久久久久久国产 免费| 欧美成人免费小视频| 精品综合久久久久久97| 麻豆乱码国产一区二区三区| 午夜精品一区二区三区av| 国产亚洲在线播放| 久久视频在线直播| 亚洲欧美在线一区| 精品少妇一区二区30p| 国产精品久久久久aaaa九色| 欧美黄色免费网站| 国产精品美女久久| 日韩电影中文 亚洲精品乱码| 国产精品99久久久久久久久久久久| 亚洲国产精品大全| 在线看欧美日韩| 亚洲欧美三级在线| 国产在线999| 国内精品小视频| 国产一区二区三区欧美| 亚洲精品视频网上网址在线观看| 538国产精品一区二区免费视频| 亚洲成人xxx| 国产精国产精品| 欧美性猛交xxxxx免费看| 亚洲专区国产精品| 国产日韩欧美日韩| 成人乱人伦精品视频在线观看| 国产精品久久一区| 国产精品777| 高清欧美电影在线| 欧美理论电影在线观看| 伊人亚洲福利一区二区三区| 久久精品久久久久久| 色樱桃影院亚洲精品影院| 欧美大片免费看| 91免费精品国偷自产在线| 亚洲精品视频网上网址在线观看| 久久av中文字幕| 国产免费一区二区三区香蕉精| 国产精品国内视频| 精品视频一区在线视频| 国产成人欧美在线观看| 91在线免费看网站| 欧美成年人在线观看| 一区二区三区黄色| 久久免费福利视频| 欧美激情伊人电影| 精品国产乱码久久久久久婷婷| 精品亚洲一区二区三区在线观看| 在线观看日韩www视频免费| 国产精品美女久久久免费| www.日韩系列| 中文字幕日韩高清| 欧美性少妇18aaaa视频| 精品国产一区二区三区久久久| 日韩av在线免播放器| 欧美激情视频在线观看| 国产噜噜噜噜久久久久久久久| 中文字幕亚洲综合久久| 亚洲图片欧洲图片av| 亚洲午夜女主播在线直播| 亚洲成av人片在线观看香蕉| 亚洲成av人片在线观看香蕉| 日日噜噜噜夜夜爽亚洲精品| 456亚洲影院| 国产精品成人免费视频| 久久国产精品免费视频| 国产日韩欧美91| 久久视频这里只有精品| 久久成年人视频| 欧美主播福利视频| 九九热精品视频在线播放| 欧美在线视频在线播放完整版免费观看| 一区二区三区回区在观看免费视频| 国产精品成人国产乱一区| 欧美xxxwww| 国产成人精品久久二区二区| 97热在线精品视频在线观看| 国产成人精品久久| 欧美黑人一区二区三区| 国产精品www色诱视频| 黄色精品在线看| 欧美在线日韩在线| 姬川优奈aav一区二区| 一个人看的www久久| 国产精品日韩电影| 日韩在线视频免费观看高清中文| 精品国产依人香蕉在线精品| 国产69精品久久久| 国产精品第七影院| 国产精品91视频| 精品久久久久久电影| 91av视频在线播放| 久久久亚洲影院你懂的| 国产精品99蜜臀久久不卡二区| 高清在线视频日韩欧美| 欧美精品少妇videofree| 亚洲网站在线播放| 欧美肥老妇视频| 亚洲国产日韩欧美在线图片| 97香蕉久久超级碰碰高清版| 亚洲精品久久久久久久久久久| 欧美亚洲一级片| 国产精品十八以下禁看| 亚洲人成网站999久久久综合| 欧美一区二区大胆人体摄影专业网站| 92版电视剧仙鹤神针在线观看| 欧美激情中文字幕在线| 久久免费国产精品1| 尤物yw午夜国产精品视频| 亚洲老板91色精品久久| 欧美黄色免费网站| 国产成人一区二区三区| 亚洲成av人影院在线观看| 成人性生交xxxxx网站| 亚洲精品免费网站| 亚洲欧美日韩久久久久久| 亚洲电影中文字幕| 国产免费一区视频观看免费| 国产精品美女午夜av| 亚洲国产一区二区三区在线观看| 国产精品18久久久久久首页狼| 欧美日韩中国免费专区在线看| 欧美成人全部免费| 欧美另类交人妖| 国产视频精品自拍| 欧美激情综合色| 亚洲国产欧美一区二区丝袜黑人| 欧美一区视频在线| 97超碰国产精品女人人人爽|