Hibernate ​HQL查询方法怎么使用

今天小编给大家分享一下Hibernate HQL查询方法怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

HQL查询

• HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式。

• HQL在语法结构上和SQL语句十分的相同,所以可以很快的上手进行使用。使用HQL需要用到Hibernate中的Query对象,该对象专门执行HQL方式的操作。

查询所有示例

session.beginTransaction();
String hql = "from User"; // from 后跟的是要查询的对象,而不是表Query query = session.createQuery(hql);List<User> userList = query.list();for(User user:userList){
System.out.println(user.getUserName());
}
session.getTransaction().commit();

带where的查询示例

session.beginTransaction();
String hql = "from User where userName = 'James'";
Query query = session.createQuery(hql);
List<User> userList = query.list();for(User user:userList){
System.out.println(user.getUserName());
}
session.getTransaction().commit();
/*
在HQL中where语句中使用的是持久化对象的属性名,如上面示例中的userName。当然在HQL中也可以使用别名
*/
String hql = "from User as u where u.userName = 'James'";
/*
过滤条件
在where语句中还可以使用各种过滤条件,如:=、<>、<、>、>=、<=、between、not between、in、not in、is、like、and、or等
*/

获取一个不完整的对象

session.beginTransaction();String hql = "select userName from User";
Query query = session.createQuery(hql);
List<Object> nameList = query.list();for(Object obj:nameList){
   String name=(String)obj;
   System.out.println(name);
}
session.getTransaction().commit();// 多个属性的话,需要用object[]接收session.beginTransaction();String hql = "select userName,userPwd from User";
Query query = session.createQuery(hql);
List nameList = query.list();for(Object obj:nameList){Object[] array = (Object[]) obj; // 转成object[]System.out.println("name:" + array[0]);
System.out.println("pwd:" + array[1]);
}
session.getTransaction().commit();

统计和分组查询

session.beginTransaction();
String hql = "select count(*),max(id) from User";
Query query = session.createQuery(hql);
List nameList = query.list();
for(Object obj:nameList){
Object[] array = (Object[]) obj;
System.out.println("count:" + array[0]);
System.out.println("max:" + array[1]);
}
session.getTransaction().commit();
/*
该条sql语句返回的是单条数据,所以还可以这样写
单列数据用Object,多列数据用Object[]
*/
Object[] object = (Object[]) query.uniqueResult();
System.out.println("count:" + object[0]);
System.out.println("max:" + object[1]);

更多写法

select distinct name from Student;select max(age) from Student;select count(age),age from Student group by age;
from Student order by age;

HQL占位符

session.beginTransaction();
String hql = "from User where userName = ?";
Query query = session.createQuery(hql);// 索引从0开始query.setString(0, "James");List<User> userList = query.list();for(User user:userList){
System.out.println(user.getUserName());
}
session.getTransaction().commit();

HQL引用占位符

session.beginTransaction();
String hql = "from User where userName = :name";
Query query = session.createQuery(hql);
query.setParameter("name", "James");List<User> userList = query.list();for(User user:userList){
System.out.println(user.getUserName());
}
session.getTransaction().commit();

HQL分页

session.beginTransaction();
String hql = "from User";
Query query = session.createQuery(hql);
query.setFirstResult(0);
query.setMaxResults(2);List<User> userList = query.list();for(User user:userList){
System.out.println(user.getUserName());
}
session.getTransaction().commit();

以上就是“Hibernate HQL查询方法怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注蜗牛博客行业资讯频道。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram