Hibernate使用sql語句查詢

 

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.transform.Transformers;

import com.hibernate.bean.SqlQueryBean;
import com.hibernate.bean.User;
import com.hibernate.util.HibernateUtil;


public class SqlQueryTest {

 public static void main (String [] args){
  
  sqlQueryAddScalar();
  
 }
  
  static void sqlQueryAddEntity(){

     //獲取Hibernate Session對象

     Session session = HibernateUtil.getSession();

     //開始事務

     Transaction tx = session.beginTransaction();

     //編寫SQL語句

     String sqlString = "select * from user";

     //以SQL語句創建SQLQuery對象

     List l = session.createSQLQuery(sqlString)

                     //將查詢ss實體關聯的User類

                     .addEntity("ss",User.class)

                     //返回全部的記錄集

                     .list();

     //遍歷結果集

     Iterator it = l.iterator();

     while (it.hasNext()){

         //因爲將查詢結果與Student類關聯,因此返回的是Student集合

         User s = (User)it.next();

         String a = s.getName();
        
         System.out.println(a);

     }

     //提交事務

     tx.commit();

     session.close();

 }
 
 static void sqlQueryAddScalar(){
  
  //返回Object[]的遍歷
  
  Session session=HibernateUtil.getSession();
  
  Transaction transaction=session.beginTransaction();
  
  String sql="select * from user";
  
  SQLQuery s=(SQLQuery) session.createSQLQuery(sql); //.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
  
  s.addScalar("id",Hibernate.INTEGER); //列名, 數據類型
  s.addScalar("name",Hibernate.STRING);
  
  List list=s.list();
 
  Object[] objects=(Object[])list.get(0);
 
  System.out.println(objects[0]);
  System.out.println(objects[1]);
  
  //用MAP
  
  SQLQuery ss=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
  
  ss.addScalar("id",Hibernate.INTEGER);
  ss.addScalar("name",Hibernate.STRING);
  
  List list2=ss.list();
  
  Map map = (Map) list2.get(0);
  
  System.out.println(map.get("name"));
  System.out.println(map.get("id"));
  
  //用LIST

  SQLQuery s3=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.TO_LIST);
  
  s3.addScalar("id",Hibernate.INTEGER);
  s3.addScalar("name",Hibernate.STRING);
  
  List list3=s3.list();
 
  List list4=(List)list3.get(0);
 
  System.out.println(list4.get(0));
  System.out.println(list4.get(1));
  
  //用自定義的bean
  
  SQLQuery e=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(SqlQueryBean.class));
  
  e.addScalar("id",Hibernate.INTEGER);
  e.addScalar("name",Hibernate.STRING);
  
  List r=e.list();
 
  SqlQueryBean sqb=(SqlQueryBean)r.get(0);
 
  System.out.println(sqb.getId());
  System.out.println(sqb.getName());
  }
 

}

發佈了84 篇原創文章 · 獲贊 15 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章