【Hibernate学习之路6】HQL

来源:互联网 发布:知往事之不可追 编辑:程序博客网 时间:2024/05/29 18:40

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类的类名方法之外,大小写不敏感

0 0
原创粉丝点击