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