【Hibernate学习之路6】HQL

1.概述:HOL看上去很像SQL,但不要被语法结构所迷惑,HQL被有意识的设计为完全面向对象的查询。
2.from子句:

Query query =   session.createQuery("from Dept");
            List<Dept> list = query.list();
            for(Dept d:list){
                System.out.println(d.getDname());
            }

3.select子句:

            Query q = session.createQuery("select pname,price from Product");
            List<Object[]> list = q.list();         for(Object[] o : list){
                System.out.println(o[0]+"  "+o[1]);
            }
//注意:
//1.HQL中,select子句执行后返回的是Object[]类型
//2.用的createSQLQuery返回值定义为list<Object[]>
//由于sql的特殊原因 可能返回值的数组里面 list.get(i)的长度不固定,
//可能是1或者更多,当是1的时候系统就不认定它是一个Object[] 而是一个String所以会报这样一个错java.lang.String cannot be cast to[Ljava.lang.Object

4.where子句:

        //Query q = session.createQuery("from Product where price>3000");
        //Query q = session.createQuery("from Product where pname='iphone5'");
        //Query q = session.createQuery("from Product where price between 2000 and 3000");
        //Query q = session.createQuery("from Product where price>=2000 and price<=3000");
//      Query q = session.createQuery("from Product where upper(remark)=remark");
//      
//      List<Product> list = q.list();
//      for(Product p : list){
//          System.out.println(p.getPname()+" "+p.getPrice());
//      }

        //预编译
        //Query q = session.createQuery("from Product where price>?");
        //q.setDouble(0, 2000);

//      Query q = session.createQuery("from Product where pname like ?");
//      q.setString(0, "%5%");
//      List<Product> list = q.list();
//      for(Product p : list){
//          System.out.println(p.getPname()+" "+p.getPrice());
//      }

5.其它字句

//order by排序
//      Query q = session.createQuery("from Product order by price desc");
//      List<Product> list = q.list();
//      for(Product p : list){
//          System.out.println(p.getPname()+" "+p.getPrice());
//      }

        //分组函数
//      Query q = session.createQuery("select remark,count(*) from Product group by remark");
//      List<Object[]> list = q.list();
//      for(Object[] o : list){
//          System.out.println(o[0]+"  "+o[1]);
//      }

        //连接查询
//      Query q = session.createQuery("select a.ename,b.dname from Emp a,Dept b where a.deptno=b.deptno");
//      List<Object[]> list = q.list();
//      for(Object[] o : list){
//          System.out.println(o[0]+"  "+o[1]);
//      }
//      Query q = session.createQuery("from Emp where sal>(select avg(sal) from Emp)");
//      List<Emp> list = q.list();
//      for(Emp e : list){
//          System.out.println(e.getEname()+" "+e.getJob()+" "+e.getSal());
//      }
//      

注意:在HQL中,除了针对JAVA类的类名方法之外,大小写不敏感

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值