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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,679評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,011評論 0 11
  • JavaEE的三層結(jié)構(gòu) web層:struts2框架 service層:spring框架 dao層:hiberna...
    0c9e81b07e5a閱讀 786評論 0 2
  • 本文包括:1、Hibernate 的查詢方式2、HQL (Hibernate Query Language) 查詢...
    廖少少閱讀 2,716評論 0 15
  • 如果老了, 鶴發(fā)童顏, 無拘無束 , 該有多好, 或吹或打, 放松放松, 咋著就好, 就是知足, 無不靜好!
    笑二笑閱讀 252評論 0 0

友情鏈接更多精彩內(nèi)容