Hibernate--查詢

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

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

2 查詢所有hql語句

form 實體類名稱

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)用方法實現(xiàn)
2 實現(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實現(xiàn)
2 實現(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));
             }
返回數(shù)組

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

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

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

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

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