欢迎来到天天文库
浏览记录
ID:49866487
大小:87.50 KB
页数:4页
时间:2020-03-05
《HQL实用技术.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、为什么使用HQL?HQL(HibernateQueryLanguage)是Hibemate提供的一种面向对象的查询语言。提供了强大的查询能力。使用HQL可以避免使用JDBC查询的一些弊端,a)不需要编写繁复的SQL语句,我们将针对实体类及其属性进行查询。b)查询结果是直接存放在Lis(中的对象,不需要再次封装。c)HQL独立于数据库,对不同的数据库根据Hibernatedialect属性的配置自动生成不同的SQL语句执行。如何使用HQL?完整的HQL语法如下:[select/update/delete....]fromEntity[as]e[wheree.property=][group
2、by....][having...J[orderby....
3、a)得到sessionb)编写HQL语句c)创建Query对象d)执行查询,得到结果示例:publieListgetAllDistricts(){Listdistriets=newArrayList4、ct”;//3、创建Query对象Queryquery=session.createQuery(hql);//4、执行查询districts=query.list();session•getTronsoction().commit();}catch(HibernateExceptione){e•printStackTrace();if(session・getTrans^ction()!=null){session.getTransaction()•rollback();Where子句:比较操作符与SQL相同:==(等于等于)、v>(不等于)、v(小于)、>(大于)、>=>v=、betwe5、enand、notbetween>notininis>likeStringhql=nfromDistrictasdwhered.id=1001n;Queryquery=session.createQuery(hql);Districtd=(District)query•uniqueResult();会生成如下SQL语句:Hibernate:selectdistrict0_・idasidO_,district0_.nameasnameO_fromdistrictdistrict0_wheredistrictO_.id=1001Hibernate:selectstreetsO_.distri6、ct_idasdistrict3_l_zstreetsO_.idasidlzstreetsO•idasidl0/streetsO.nameasnamel0/streetsO_・district_idasdistrict3_l_0_fromstreetstreetsO_wherestreetsO_.district_id=?HQL属性列查询:1、单列查询返回单个对象:session=HibernateUtil•getSession();session•beginTransaction();Stringhql=Hselectd.namefromDistrictasdwhered.id=1007、1H;Queryquery=session.createQuery(hql);Objectobj=query.uniqueResult();System.out.printin(obj);2、多列査询返回多个对象:session=HibernateUtil•getSession();session.beginTransaction();Stringhql=nselectd.name,d.idfromDistrictasdwhered.id=1001";Queryquery=session.createQuery(hql);Object[]obj=(Object[])query•uniqu8、eResult();System.out.printin(obj[0]+""+obj[1]);3、构造对象实例对数据列封装返回对象实例:session=HibernateUti丄•getSession();session.beginTransaction();//注意:构造函数的参数顺序要一致Stringhql=HselectnewDistrict(d.id,d.name)fromDistrictasdwhered-id=1001n
4、ct”;//3、创建Query对象Queryquery=session.createQuery(hql);//4、执行查询districts=query.list();session•getTronsoction().commit();}catch(HibernateExceptione){e•printStackTrace();if(session・getTrans^ction()!=null){session.getTransaction()•rollback();Where子句:比较操作符与SQL相同:==(等于等于)、v>(不等于)、v(小于)、>(大于)、>=>v=、betwe
5、enand、notbetween>notininis>likeStringhql=nfromDistrictasdwhered.id=1001n;Queryquery=session.createQuery(hql);Districtd=(District)query•uniqueResult();会生成如下SQL语句:Hibernate:selectdistrict0_・idasidO_,district0_.nameasnameO_fromdistrictdistrict0_wheredistrictO_.id=1001Hibernate:selectstreetsO_.distri
6、ct_idasdistrict3_l_zstreetsO_.idasidlzstreetsO•idasidl0/streetsO.nameasnamel0/streetsO_・district_idasdistrict3_l_0_fromstreetstreetsO_wherestreetsO_.district_id=?HQL属性列查询:1、单列查询返回单个对象:session=HibernateUtil•getSession();session•beginTransaction();Stringhql=Hselectd.namefromDistrictasdwhered.id=100
7、1H;Queryquery=session.createQuery(hql);Objectobj=query.uniqueResult();System.out.printin(obj);2、多列査询返回多个对象:session=HibernateUtil•getSession();session.beginTransaction();Stringhql=nselectd.name,d.idfromDistrictasdwhered.id=1001";Queryquery=session.createQuery(hql);Object[]obj=(Object[])query•uniqu
8、eResult();System.out.printin(obj[0]+""+obj[1]);3、构造对象实例对数据列封装返回对象实例:session=HibernateUti丄•getSession();session.beginTransaction();//注意:构造函数的参数顺序要一致Stringhql=HselectnewDistrict(d.id,d.name)fromDistrictasdwhered-id=1001n
此文档下载收益归作者所有