简述Hibernate在HQL中查询实例

我们学习Hibernate查询是知道HQL支持条件查询,分为好多方面,这里我们就具体Hibernate查询用实例来加以说明,希望对读者的学习带来帮助。

站在用户的角度思考问题,与客户深入沟通,找到莱西网站设计与莱西网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广、主机域名、网络空间、企业邮箱。业务覆盖莱西地区。

1、支持字符串方式参数传递查询:

例子:

 
 
 
  1. List students = session.createQuery("select s.id,s.name from Student s where s.name like '%1' ").list();
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {
  3.                 Object[] o = (Object[])iter.next();
  4.                 System.out.println(o[0]+","+o[1]);
  5.             }

由于,涉及到多个属性查询,所以返回的是Object数组类型。

2、支持类似于PrepareStatement方式的?传递参数查询

例子:

 
 
 
  1. List students = session.createQuery("select s.id,s.name from Student s where s.name like :goodname ")
  2.                                                 .setParameter("goodname", "%1%").list();
  3.             for (Iterator iter=students.iterator(); iter.hasNext();) {
  4.                Object[] o = (Object[])iter.next();
  5.                System.out.println(o[0]+","+o[1]);
  6.            }

要设置参数从0开始,见第2行。

3、去变量方式参数传递

例子:

 
 
 
  1. List students = session.createQuery("select s.id,s.name from Student s where s.name like :goodname ")
  2.                                                 .setParameter("goodname", "%1%").list();
  3.             for (Iterator iter=students.iterator(); iter.hasNext();) {
  4.                Object[] o = (Object[])iter.next();
  5.                 System.out.println(o[0]+","+o[1]);
  6.            }

这个跟2中的相似,只是多了参数可以归为一类。

4、支持多参数传递

例子:

 
 
 
  1. List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids)")
  2.             .setParameterList("myids", new Object[]{1, 2, 3, 4, 5,32,13,14})
  3.                 .list();
  4.             for (Iterator iter=students.iterator(); iter.hasNext();) {
  5.                 Object[] o = (Object[])iter.next();
  6.                 System.out.println(o[0]+","+o[1]);
  7.             }

注意调用方法是setParameterList。

5、调用数据库里面的函数

例子:

 
 
 
  1. List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=?")
  2.            .setParameter(0, "2008-10")
  3.                 .list();
  4.            for (Iterator iter=students.iterator(); iter.hasNext();) {
  5.                 Object[] o = (Object[])iter.next();
  6.                System.out.println(o[0]+","+o[1]);
  7.            }

数据库函数date_format。

6、直接支持sql查询

例子:

 
 
 
  1. List students = session.createSQLQuery("select *from t_student").list();
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {
  3.                Object[] o = (Object[])iter.next();
  4.                 System.out.println(o[0]+","+o[1]);
  5.            }

只需要调用session里面的createSQLQuery方法即可。

7、进行导航查询

例子:

 
 
 
  1. List students = session.createQuery("select s.name from Student s where s.classes.name like '%1%'").list();
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {
  3.                String s = (String)iter.next();
  4.                 System.out.println(s);
  5.             }

这种查询很方便。

8、分页查询

例子:

 
 
 
  1. List students = session.createQuery("from Student").setFirstResult(0).setMaxResults(3).list();
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {
  3.                 Student student = (Student)iter.next();
  4.                 System.out.println(student.getName());
  5.             }

这是很简单的分页查询,分页查询实现比这个复杂多了,分页查询采用的相当于数据库里面的 limit ,来限制一次查询显示的条数。

注:还有一些其他就不一一列举了,Hibernate查询在Hibernate的使用中HQL查询语言如果用得好,会给工作带来比较高的效率,比较重要,而且还有一个查询效率的问题,这涉及到缓存等方面,以后会更新这方面的文章。

本文标题:简述Hibernate在HQL中查询实例
文章分享:http://www.shufengxianlan.com/qtweb/news38/214888.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联