Hibernater學(xué)習(xí)筆記(六)

一耗跛、對象導(dǎo)航查詢

之前的客戶和聯(lián)系人的關(guān)系是一 對多的關(guān)系:一對多

場景:根據(jù)客戶id查詢客戶尖飞,在查出該客戶的所有聯(lián)系人

 @Test
    public void selectTest(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            transaction = session.beginTransaction();
            //根據(jù)c_id 查詢出該客戶
            Customer customer = session.get(Customer.class,1);
            //然后查詢出該客戶聯(lián)系人
            Set<Salesperson> set  = customer.getSalespersonSet();
            Iterator<Salesperson> it = set.iterator();
            while (it.hasNext()) {
                Salesperson str = it.next();
                System.out.println(str.getS_name());
            }
            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            session.close();
            sessionFactory.close();
        }
    }
二翘骂、HQL查詢
  • 查詢所有客戶信息
    • 創(chuàng)建Query對象驱闷,寫出hql語句
    • 調(diào)用query對象里面的方法得到結(jié)果
    • 查詢所有 from+實(shí)體類名稱
    @Test
    public void selectTest(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            transaction = session.beginTransaction();
            //創(chuàng)建query對象
              Query query =  session.createQuery("from Customer");

             //調(diào)用方法得到結(jié)果
            List<Customer> list = query.list();
            for (Customer customer: list) {
                System.out.println(customer.getC_id()+"-"+customer.getC_name());
            }
            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            session.close();
            sessionFactory.close();
        }
    }
  • 條件查詢
    • 語句:from 實(shí)體類名稱 where 實(shí)體類屬性=? and 實(shí)體類名稱
@Test
    public void selectByCidAndCnameTest(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            transaction = session.beginTransaction();
            //創(chuàng)建query對象
            Query query =  session.createQuery("from Customer where c_id = ? and c_name = ?");
            query.setParameter(0,1);
            query.setParameter(1,"李客戶");
            //調(diào)用方法得到結(jié)果
            List<Customer> list = query.list();
            for (Customer customer: list) {
                System.out.println(customer.getC_id()+"-"+customer.getC_name());
            }
            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            session.close();
            sessionFactory.close();
        }
    }
條件查詢
  • 排序查詢
    • 語句:from 實(shí)體類名稱 order by 實(shí)體類名稱 asc/desc
@Test
    public void selectOrderByTest(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            transaction = session.beginTransaction();
            //創(chuàng)建query對象
            Query query =  session.createQuery("from Customer order by  c_id desc ");
            //調(diào)用方法得到結(jié)果
            List<Customer> list = query.list();
            for (Customer customer: list) {
                System.out.println(customer.getC_id()+"-"+customer.getC_name());
            }
            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            session.close();
            sessionFactory.close();
        }
    }
  • 分頁查詢
 @Test
    public void selectLimitTest(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            transaction = session.beginTransaction();
            //創(chuàng)建query對象
            Query query =  session.createQuery("from Customer");
            //設(shè)置分頁數(shù)據(jù)
            query.setFirstResult(0);
            query.setMaxResults(2);
            //調(diào)用方法得到結(jié)果
            List<Customer> list = query.list();
            for (Customer customer: list) {
                System.out.println(customer.getC_id()+"-"+customer.getC_name());
            }
            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            session.close();
            sessionFactory.close();
        }
    }
  • 投影查詢
    • 語句:select * from 實(shí)體類屬性名稱一敲董,實(shí)體類屬性名稱二, from 實(shí)體類名稱
    • select 后面不能寫 * 號慰安,不支持
 @Test
    public void selectSomeTest(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            transaction = session.beginTransaction();
            //創(chuàng)建query對象
            Query query =  session.createQuery("select c_name from Customer");
            //調(diào)用方法得到結(jié)果
            List<Object> lists = query.list();
            for (Object list: lists) {
                System.out.println(list);
            }
            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            session.close();
            sessionFactory.close();
        }
    }
image.png
  • 聚集函數(shù)使用
    • count 腋寨,sum , avg , mac , min
    • 語句:select count(*) from 實(shí)體類名稱
@Test
    public void selectHanshuTest(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            transaction = session.beginTransaction();
            //創(chuàng)建query對象
            Query query =  session.createQuery("select count(*) from Customer");
            //調(diào)用方法得到結(jié)果
            Object count = query.uniqueResult();
            //先轉(zhuǎn)換成long類型,再轉(zhuǎn)換為int
            Long co = Long.parseLong(count.toString());
            System.out.println(co.intValue());
            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            session.close();
            sessionFactory.close();
        }
    }

上一篇:Hibernater學(xué)習(xí)筆記(五)
當(dāng)前文集 :Hibernate框架學(xué)習(xí)
本筆記hibernate案例:github地址
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末化焕,一起剝皮案震驚了整個濱河市萄窜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖查刻,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件键兜,死亡現(xiàn)場離奇詭異,居然都是意外死亡穗泵,警方通過查閱死者的電腦和手機(jī)普气,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佃延,“玉大人现诀,你說我怎么就攤上這事÷乃啵” “怎么了仔沿?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尺棋。 經(jīng)常有香客問我封锉,道長,這世上最難降的妖魔是什么膘螟? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任成福,我火速辦了婚禮,結(jié)果婚禮上萍鲸,老公的妹妹穿的比我還像新娘闷叉。我一直安慰自己,他們只是感情好脊阴,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布握侧。 她就那樣靜靜地躺著,像睡著了一般嘿期。 火紅的嫁衣襯著肌膚如雪品擎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天备徐,我揣著相機(jī)與錄音萄传,去河邊找鬼。 笑死蜜猾,一個胖子當(dāng)著我的面吹牛秀菱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹭睡,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼衍菱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肩豁?” 一聲冷哼從身側(cè)響起脊串,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辫呻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琼锋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體放闺,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年缕坎,在試婚紗的時候發(fā)現(xiàn)自己被綠了怖侦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡念赶,死狀恐怖础钠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叉谜,我是刑警寧澤旗吁,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站停局,受9級特大地震影響很钓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜董栽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一码倦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锭碳,春花似錦袁稽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歧沪,卻和暖如春歹撒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诊胞。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工暖夭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撵孤。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓迈着,卻偏偏與公主長得像,于是被迫代替她去往敵國和親邪码。 傳聞我的和親對象是個殘疾皇子寥假,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法霞扬,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法喻圃,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,814評論 0 11
  • JavaEE的三層結(jié)構(gòu) web層:struts2框架 service層:spring框架 dao層:hiberna...
    0c9e81b07e5a閱讀 732評論 0 2
  • 本文包括:1萤彩、Hibernate 的查詢方式2、HQL (Hibernate Query Language) 查詢...
    廖少少閱讀 2,663評論 0 15
  • 如果老了斧拍, 鶴發(fā)童顏雀扶, 無拘無束 , 該有多好肆汹, 或吹或打愚墓, 放松放松, 咋著就好昂勉, 就是知足浪册, 無不靜好!
    笑二笑閱讀 190評論 0 0