1. 程式人生 > >Java-hibernate框架3(查詢語句總結)

Java-hibernate框架3(查詢語句總結)

Hibernate 查詢方式 1Hibernate查詢HQL語句 限制查詢結果記錄數與起始記錄 Session session=HibernateSessionFactory.getSession(); Query query=session.createQuery("from Customer"); query.setFirstResult(10); //設定查詢記錄開始位置,索引從0開始。 query.setMaxResults(10);//設定查詢返回的最大記錄個數。 List list=query.list(); 注意:條件查詢 Session session=HibernateSessionFactory.getSession(); Query query=session.createQuery("from Customer cus where
cus.name='zhou'");
 2、取表中部分列時 (1) 單一屬性查詢。還是返回一個集合,只不過集合中儲存的不是表的例項而是物件。 Session session = null; session = HibernateSessionFactory.getSession(); List cnames = session.createQuery("selectcname fromCustomer").list(); for (int i=0;i< cnames.size();i++) { String name = (String)cnames.get(i); System.out.println(name); }
(2)
多個屬性的查詢,使用物件陣列。 Session session = null; session = HibernateSessionFactory.getSession(); //查詢多個屬性,其集合元素是物件陣列 //陣列元素的型別,跟實體類的屬性的型別相關 List students = session.createQuery("selectsno, sname fromStudents").list(); for (int i=0;i< students.size();i++) { Object[] obj = (Object[])students.get(i); System.out.println(obj[0] + ", " + obj[1]); }
 (3)
多個屬性的查詢,使用List集合裝部分列 Session session = HibernateSessionFactory.getSession(); Query query = session.createQuery("selectnew list(cus.name,cus.phone) from Customer cus"); List list = query.list(); for (int i = 0; i < list.size(); i++) { List temp=(List)list.get(i); System.out.println(temp.get(0));  //0是索引 }
(4)使用Map集合裝部分列 Session session = HibernateSessionFactory.getSession(); Query query = session.createQuery("selectnew map(cus.name,cus.phone) from Customer cus"); List list = query.list(); for (int i = 0; i < list.size(); i++) { Map temp=(Map)list.get(i); System.out.println(temp.get("1"));  //"1"是key }
 3、內連線 Query query=session.createQuery("select c.name, s.namefrom Student s join s.classes c ").list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } 4、外連線 select c.name, s.name from Classes c left join c.students s select c.name, s.name from Classes c right join c.students s
5、帶引數的查詢 (1)  ?作為引數如"from Customer cus where cus.name=?";      Session session = HibernateSessionFactory.getSession();     Query query = session.createQuery("from Customer cus where cus.name=?");      query.setParameter(0, "zhou");      List list = query.list(); (2)  引數名稱 :name   如" from Customer cus where cus.name=:name"; Session session = HibernateSessionFactory.getSession();    Query query = session.createQuery("from Customer cus where cus.name=:name ");    query.setParameter("name", "zhou");    List list = query.list();
(3)  條件查詢,使用?的方式傳遞引數  Query query = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.nameLIKE ?");  query.setParameter(0, “%周%”); //傳遞引數引數的索引是從0開始的。   如條件查詢,使用":引數"名稱的方式傳遞引數 Query query = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.nameLIKE :myname"); query.setParameter("myname", "張三");//傳遞引數 因為setParameter方法返回Query介面,所以可用省略方式來查詢 List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.nameLIKE :myname and s.id = :myid") setParameter("myname", "%周%").setParameter("myid", 15).list();
6、嵌入原生sql測試  SQLQuery sqlQuery = session.createSQLQuery("select *from t_student"); List students = sqlQuery.list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); }