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(); } }
对对象进行实例化
测试结果