Hibernate使用sql語句查詢

jopen 12年前發布 | 90K 次閱讀 Hibernate 持久層框架

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()); }

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!