Hibernate--查詢

一 Query
1 使用Query對象,不需要寫sql語句捅儒,但是寫hql語句
(1)hql:hibernate query language摧扇,hibernate提供查詢語句祟剔,這個hql語句和普通sql語句很相似
(2)hql和sql語句區(qū)別:

  • 使用sql語句操作表和字段
  • 使用hql操作實(shí)體類和屬性

2 查詢所有hql語句

form 實(shí)體類名稱

3 Query對象使用
(1)創(chuàng)建Query對象

            //1 創(chuàng)建Query對象
            Query query= session.createQuery("from entity.User");

(2)調(diào)用Query對象里面的方法得到結(jié)果

            //2 調(diào)用query對象里面的方法得到結(jié)果
            List<User> list = query.list();
            for (User user :list){
                System.out.println(user);
            }

HibernateQuery.java

import Utils.HibernateUtils;
import entity.User;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import java.util.List;

public class HibernateQuery {
    @Test
    public void QueryText(){
        Transaction tx =null;
        try {
           Session session= HibernateUtils.getSessionObject();
            tx = session.beginTransaction();
            //1 創(chuàng)建Query對象
            Query query= session.createQuery("from entity.User");
            //2 調(diào)用query對象里面的方法得到結(jié)果
            List<User> list = query.list();
            for (User user :list){
                System.out.println(user);
            }

            tx.commit();
        }catch (Exception e){
            e.printStackTrace();
            tx.rollback();
        }finally {

        }
    }
}

結(jié)果顯示

二 Criteria
1 使用這個對象查詢操作,但是使用這個對象時候芒涡,不需要寫語句柴灯,直接調(diào)用方法實(shí)現(xiàn)
2 實(shí)現(xiàn)過程
(1)創(chuàng)建Criteria

            //1 創(chuàng)建Criteria
             Criteria criteria= session.createCriteria(User.class);

(2)調(diào)用對象里面的方法得到結(jié)果

            //2 調(diào)用對象里面的方法得到結(jié)果
            List<User> list= criteria.list();
            for (User user:list){
                System.out.println(user);
            }

HibernateQuery.java

 public void CriteriaText() {
        Transaction tx = null;
        try {
           Session session= HibernateUtils.getSessionObject();
           tx= session.beginTransaction();
            //1 創(chuàng)建Criteria
             Criteria criteria= session.createCriteria(User.class);
            //2 調(diào)用對象里面的方法得到結(jié)果
            List<User> list= criteria.list();
            for (User user:list){
                System.out.println(user);
            }
           tx.commit();
        }catch (Exception e){
            e.printStackTrace();
            tx.rollback();
        }
    }

結(jié)果顯示

三 SQLQuery
1 使用hibernate時候,調(diào)用底層sql實(shí)現(xiàn)
2 實(shí)現(xiàn)過程
(1)創(chuàng)建對象

            //1.創(chuàng)建對象
          SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM t_user ");

(2)調(diào)用對象的方法得到結(jié)果

            //2.調(diào)用方法得到結(jié)果
             List<Object[]> list= sqlQuery.list();
             for (Object[] objects:list){
                 System.out.println(Arrays.toString(objects));
             }
返回?cái)?shù)組

問題:返回的list集合每部分都是數(shù)組
解決:讓返回list中每部分是對象形式

            //設(shè)置數(shù)據(jù)返回到哪個實(shí)體類
            sqlQuery.addEntity(User.class);

HibernateQuery.java

import Utils.HibernateUtils;
import entity.User;
import org.hibernate.*;
import org.junit.Test;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;

public class HibernateQuery {
    @Test
    public void QueryText(){
        Transaction tx =null;
        try {
           Session session= HibernateUtils.getSessionObject();
            tx = session.beginTransaction();
            //1 創(chuàng)建Query對象
            Query query= session.createQuery("from entity.User");
            //2 調(diào)用query對象里面的方法得到結(jié)果
            List<User> list = query.list();
            for (User user :list){
                System.out.println(user);
            }

            tx.commit();
        }catch (Exception e){
            e.printStackTrace();
            tx.rollback();
        }
    }

    @Test
    public void CriteriaText() {
        Transaction tx = null;
        try {
           Session session= HibernateUtils.getSessionObject();
           tx= session.beginTransaction();
            //1 創(chuàng)建Criteria
             Criteria criteria= session.createCriteria(User.class);
            //2 調(diào)用對象里面的方法得到結(jié)果
            List<User> list= criteria.list();
            for (User user:list){
                System.out.println(user);
            }
           tx.commit();
        }catch (Exception e){
            e.printStackTrace();
            tx.rollback();
        }
    }
    @Test
    public  void SQLQueryText(){
        Transaction tx =null;
        try {
           Session session = HibernateUtils.getSessionObject();
           tx = session.beginTransaction();
            //1.創(chuàng)建對象
          SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM t_user ");
          //返回的list中每部分是對象形式
            //設(shè)置數(shù)據(jù)返回到哪個實(shí)體類
            sqlQuery.addEntity(User.class);
          //2.調(diào)用方法得到結(jié)果
           List<User> list= sqlQuery.list();
           for (User user:list){
               System.out.println(user);
           }

/*            //2.調(diào)用方法得到結(jié)果
             List<Object[]> list= sqlQuery.list();
             for (Object[] objects:list){
                 System.out.println(Arrays.toString(objects));
             }*/
           tx.rollback();
        }catch (Exception e){
            e.printStackTrace();
            tx.rollback();
        }
    }
}

執(zhí)行結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末费尽,一起剝皮案震驚了整個濱河市弛槐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌依啰,老刑警劉巖乎串,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異速警,居然都是意外死亡叹誉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門闷旧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來长豁,“玉大人,你說我怎么就攤上這事忙灼〗辰螅” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵该园,是天一觀的道長酸舍。 經(jīng)常有香客問我,道長里初,這世上最難降的妖魔是什么啃勉? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮双妨,結(jié)果婚禮上淮阐,老公的妹妹穿的比我還像新娘叮阅。我一直安慰自己,他們只是感情好泣特,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布浩姥。 她就那樣靜靜地躺著,像睡著了一般状您。 火紅的嫁衣襯著肌膚如雪勒叠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天缴饭,我揣著相機(jī)與錄音,去河邊找鬼颗搂。 笑死,一個胖子當(dāng)著我的面吹牛丢氢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播先改,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼疚察,長吁一口氣:“原來是場噩夢啊……” “哼仇奶!你這毒婦竟也來了貌嫡?” 一聲冷哼從身側(cè)響起该溯,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤岛抄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狈茉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夫椭,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氯庆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了堤撵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡陪竿,死狀恐怖屠橄,靈堂內(nèi)的尸體忽然破棺而出族跛,到底是詐尸還是另有隱情锐墙,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布桐绒,位于F島的核電站之拨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚀乔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一缎谷、第九天 我趴在偏房一處隱蔽的房頂上張望隧熙。 院中可真熱鬧,春花似錦终吼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至出牧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舔痕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工慨代, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啸如,地道東北人侍匙。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓想暗,卻偏偏與公主長得像妇汗,于是被迫代替她去往敵國和親说莫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 本文包括:1互婿、Hibernate 的查詢方式2辽狈、HQL (Hibernate Query Language) 查詢...
    廖少少閱讀 2,654評論 0 15
  • Hibernate查詢方式 對象導(dǎo)航查詢(1)根據(jù)id查詢某個客戶,再查詢這個客戶里面所有的聯(lián)系人 OID查詢(1...
    Seo_sir閱讀 3,629評論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法驮配,類相關(guān)的語法尊勿,內(nèi)部類的語法,繼承相關(guān)的語法元扔,異常的語法,線程的語...
    子非魚_t_閱讀 31,603評論 18 399
  • 一 對象導(dǎo)航查詢 根據(jù)id查詢某個客戶途事,再查詢這個客戶里面所有的聯(lián)系人 查詢某個客戶里面所有聯(lián)系人過程,使用對象導(dǎo)...
    常威爆打來福閱讀 1,057評論 3 6
  • 最早接觸到龕是小時候和外婆一起住的時候尸变,外婆信佛减俏,每天早晚念經(jīng)的時候我偶爾會在一旁看著,壁龕上供著幾尊菩薩娃承,...
    渡邊志明閱讀 425評論 2 1