Hibernate查詢所有數據的操作方式有三種。
1、Query
(1)使用該方法查詢時,不需要編寫sql語句,但是需要編寫hql(Hibernate Query Language)語句,該語句是Hibernate查詢語言。
(2)hql語言操作的是實體類和實體類的屬性,比如查詢所有數據的hql語句為:from 實體類名稱。
(3)使用方法:首先創建Query對象,然后調用該對象的List方法返回數據集合。
@Test public void test11(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getFactory(); session = sessionFactory.getCurrentSession(); tx = session.beginTransaction(); /** * 使用session對象的createQuery方法創建Query對象。 * 參數為hql語句 * 使用QUERY對象的list方法獲取數據集合 */ Query query =session.createQuery("from UserEntity"); List<UserEntity> list = query.list(); //使用forEach遍歷集合 for (UserEntity userEntity : list) { System.out.println(userEntity); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ sessionFactory.close(); } }
2、criteria
(1)使用該對象不需要寫hql語句,只需要指定實體類。
(2)使用方法:首先創建criteria對象,然后調用list返回數據集合。
@Test public void test12(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getFactory(); session = sessionFactory.getCurrentSession(); tx = session.beginTransaction(); /** * 使用session對象的createCriteria方法創建criteria對象。 * 使用criteria對象的list方法獲取數據集合 */ Criteria criteria =session.createCriteria(UserEntity.class); List<UserEntity> list = criteria.list(); //使用forEach遍歷集合 for (UserEntity userEntity : list) { System.out.println(userEntity); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ sessionFactory.close(); } }
3、SQLQuery
(1)使用該對象,需要寫底層的SQL語句。
(2)實現方法:首先創建該對象,然后調用list。
@Test public void test13(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getFactory(); session = sessionFactory.getCurrentSession(); tx = session.beginTransaction(); /** * 使用session對象的createSQLQuery方法創建SQLQuery對象。 * 使用qQLQuery對象的list方法獲取數據集合,集合里面不是對象,而是數組 */ SQLQuery qQLQuery =session.createSQLQuery("select * from t_user"); List<Object[]> list = qQLQuery.list(); //使用forEach遍歷集合 for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ sessionFactory.close(); } }
(3)數組轉換成對象
@Test public void test13(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getFactory(); session = sessionFactory.getCurrentSession(); tx = session.beginTransaction(); /** * 使用session對象的createSQLQuery方法創建SQLQuery對象。 * 使用qQLQuery對象的list方法獲取數據集合,集合里面不是對象,而是數組 */ SQLQuery qQLQuery =session.createSQLQuery("select * from t_user");
//將數組裝載進實體中 qQLQuery.addEntity(UserEntity.class); List<UserEntity > list = qQLQuery.list(); //使用forEach遍歷集合 for (UserEntity userEntity : list) { System.out.println(userEntity); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ sessionFactory.close(); } }