hibernate hql查询(需完善)
博客专区 > zdatbit 的博客 > 博客详情
hibernate hql查询(需完善)
zdatbit 发表于2年前
hibernate hql查询(需完善)
  • 发表于 2年前
  • 阅读 44
  • 收藏 0
  • 点赞 1
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

使用HQL需要四步

  1. 得到Session

  2. 编写HQL语句

  3. 创建Query对象(Query接口是HQL 查询接口。它提供了各种的查询功能)

  4. 执行查询,得到结果

sessionFactory =new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
String hql = “from test”;
Query query = session.createQuery(hql);
List<Street> list = query.list();

HQL使用:

    使用命名参数:Hibernate使用命名参数与JDBC查询参数?相似,但是Hibernate参数不容易引起混乱。如果使用JDBC查询参

数,那么每当添加、修改或删除SQL语句的内容时,都必须更新那些设置参数的Java代码,因为要根据参数在语句中出现的次序识

别它们。

一个简单的命名参数参数示例如下:

String hql = "from product where price > :price";
Query query = session.createQuery(hql);
query.setDouble("price",25.0);
List results = query.list();

使用hql进行分页,

Query接口中有两个用于分页的方法:setFirstResult()和setMaxResults()。setFirstResult()方法接受一个整数,这个整数表示结果

集中的第一行,编号从0开始。可以使用setMaxResults()方法让Hibernate只返回固定数量的对象。

简单示例如下:

Query query = session.createQuery("from product");
query.setFirstResult(1);
query.setMaxResults(20);
List result = query.list();

获取唯一的结果:

uniqueResult()方法,可以使用它从一个HQL查询中只获取一个对象。如果要从多个结果集中返回第一个结果,需要使用

setMaxResults()方法,否则会返回NonUniqueResultException异常,如果查询结果中没有相应的结果,则返回null

简单示例如下:

String hql="from product where price > : price";
Query query = session.createQuery(hql);
query.setDouble("price","25.0");
query.setMaxResults(1);
product product = (product) query.uniqueResult();

补充:

HQL的用法是查询对象,而不是数据库,比如JAVA bean是User,对应的数据库为t_user,此时HQL语句应为 from User而非from t_user,另外,如果要加参数,要加单引号

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 34
码字总数 3459
×
zdatbit
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: