第五次作業 hql查詢
阿新 • • 發佈:2018-05-31
ransac ron on() hql查詢 mit ktr lec trace hibernate
hql查詢是基於對象的查詢,不是基於表的查詢。
1.hql的簡單查詢
@Test public void queryUsers() { //簡單查詢 SessionFactory sf = null; Session s = null; Transaction t = null; try { sf = HibernateUtil.getSessionFactory(); s = sf.getCurrentSession(); t= s.beginTransaction(); Query<User> query = s.createQuery("from User"); List<User> users = query.list(); for(User user:users){ System.out.println(user); } t.commit(); }catch(Exception e) {if(t!=null) { t.rollback(); } e.printStackTrace(); } }
其中“from User”是hql語句,User是實體類User類,而不是User表
此實例測試結果
數據庫內容
2.屬性查詢
@Test public void queryUsernames() { //屬性查詢 SessionFactory sf = null; Session s = null; Transaction t= null; try { sf = HibernateUtil.getSessionFactory(); s = sf.getCurrentSession(); t = s.beginTransaction(); Query<User> query = s.createQuery("select u.username from User u"); List usernames = query.list(); for(Object username:usernames){ System.out.println(username); } t.commit(); }catch(Exception e) { if(t!=null) { t.rollback(); } e.printStackTrace(); } }
測試結果
3.實例化查詢
@Test public void queryNewUser() { //實例化查詢 SessionFactory sf = null; Session s = null; Transaction t = null; try { sf = HibernateUtil.getSessionFactory(); s = sf.getCurrentSession(); t = s.beginTransaction(); Query<User> query = s.createQuery("select new User(u.id,u.username,u.password,u.sex,u.age) from User u"); List<User> users = query.list(); for(User user:users){ System.out.println(user); } t.commit(); }catch(Exception e) { if(t!=null) { t.rollback(); } e.printStackTrace(); } }
對對象進行實例化
測試結果
第五次作業 hql查詢