Hibernate在HQL中查询实例

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

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

例子:

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

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

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

例子:

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

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

3、去变量方式参数传递

例子:

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

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

4、支持多参数传递

例子:

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

注意调用方法是setParameterList。

时间: 2024-10-15 09:17:19

Hibernate在HQL中查询实例的相关文章

Hibernate多对多关联映射的HQL中的in条件查询问题

群里有朋友求解一个问题,高分求一条HQL多对多查询语句 . 问题描述见 http://topic.csdn.net/u/20090621/16/4eac6fe0-bf3e-422e-a697-f7584732f66e.html, 摘要如下: 一个学科表(Field),一个用户表(User),多对多关系. 学科表有两个字段,id和descripiton,用户表有众多字段,不罗列了 Field中有SET集合users User中有SET集合fields 现在要查掌握id like '520%'的女性

为什么Hibernate 3中的HQL无法查询汉字

为什么Hibernate 3中的HQL无法查询汉字 使用同样的代码和配置文件,在Hibernate 2上完全没有问题,在Hibernate 3中,使用如下HQL查询,无法得到正确的结果集: String hql = "from story where title like '%汉字%'"; Query q = session.createQuery(hql); 但用下面的HQL查询,却可以得到正确结果集: String hql = " from story where tit

实例请教hibernate如何实现模糊查询

问题描述 我现在需要做一个东西其中涉及到用hibernate一个模糊查询比如,user表,映射到一个Pojo名字叫user里面有5个属性name,birthday,telephonenumber,address,email现在需要做个查询,要求从页面传入这5个属性,做多个值的联合模糊查询,如果某个属性是空的,那这个属性在查询当中就是不作限制,搜寻所有的值比如,页面输入,name="王",其他4项都是空那么就搜索,名字当中含有"王"字的所有人,比如王军,李王军,李军王

Hibernate基本的CRUD操作实例(更新,保存,删除,查询)

Hibernate基本的CRUD一些方法 CRUD就是CREATE.READ.UPDATE.DELETE的缩写 1.Hibernate中插入记录的方法有: Session.save(); Session.persist(); 2.Hibernate中查询记录的方法有: Session.get() Session.Load(); 3.Hibernate中更新记录的方法有: Session.update(); Session.updateOrSave(); Session.merge(); 4.Hi

hql在mysql中查询出错

问题描述 hql在mysql中查询出错 今天遇到一个非常奇怪的问题,mysql数据库,hibernate注解配置表, from Wxyhdtb where zt=1 and wxyh.id=1 order by wxyh.id 测试发现在where条件中wxyh.id会出错,Unknown column 'wxyh.id' in 'where clause',但是只在order by wxyh.id却没有问题 ,请问这是什么情况? 注:以前用oracle 就不会出现这种情况 解决方案 Mysql

hibernate的hql多个查询条件如何快捷的拼接

问题描述 hibernate的hql多个查询条件如何快捷的拼接 比如说有个检索,可能要检索A,B,C,D,E五个属性,那么在hql中拼接的语句就应该是 from table where A=? and b=? and C=? and D=? and E=?这样子,但是现实情况是比较复杂的,如果手动去拼接这个字符串比较复杂,什么时候加where就是个问题了,更何况有的属性查询有的不查询,求各位大神有什么现成的解决方案吗?或者我自己写代码的话是什么思路呢? 解决方案 你们回答的都不对,我找到解决办法

hibernate HQL 模糊查询 3种方式

hibernate HQL 模糊查询 3种方式以下是用 hibernate的HQL(面向对象的查询语言)实现模糊查询的3种方式,其中方式一是这三中方式中最理想的方式,至少方式一可以有效的防止由于查询条 件中需要参数的增多导致的代码长度太长出现代码折行的情况(代码太长会给后期的维护和测试带来很大的不便).但是还有比他更理想的方式,因为方式一在定义 strSQL时使用String ,这就势必会造成当变量过多时strSQL自身太长的问题.一个比较有效的改进办法就是将String 改进为StringBu

java-Java Hibernate中查询取值

问题描述 Java Hibernate中查询取值 Sql语法是这样的:![图片说明] 用Hibernate查询的语法不知道有没有问题呢? 还有最后一个问题: 我查询后的值存在query里面了, 我又要怎么取值呢? 求大家帮帮忙 解决方案 你那ID写里面就是死值了,要么用"?"代替,要么用 "+ +" 抱起来,哪有你那么写的 解决方案二: query.list()吧,然后看返回值是什么类型就用什么类型去接收就OK了.推荐看看这个先,里面有你想要的内容:http://z

属性查询-hql中自动生成的通过一个属性和属性值查询记录的方法怎么改成通过一个属性和该属性的多个值查?

问题描述 hql中自动生成的通过一个属性和属性值查询记录的方法怎么改成通过一个属性和该属性的多个值查? 解决方案 hql中用and来合并条件