HQL语法.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:5 大小:21KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HQL语法HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征。HQL查询依赖于Query类,每个Query实例对应一个查询对象,使用HQL查询按如下步骤进行:(1)获取HibernateSession对象;(2)编写HQL语句;(3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象;(4)如果HQL语句包含参数,调用Query的setXxx方法为参数赋值;(5)调用Query对象的list等方法遍历查询结果。查询示例:publicclassHqlQuery{publicstaticvoidmain(String[]args)throwsException{HqlQuerymgr=newHqlQuery();//调用查询方法mgr.findPersons();//调用第二个查询方法mgr.findPersonByHappenDate();HibernateUtil.sessionFactory.close();}//第一个查询方法privatevoidfindPersons(){//获得HibernateSessionSessionsess=HibernateUtil.currentSession();//开始事务Transactiontx=sess.beginTransaction();//以HQL语句创建Query对象//执行setString方法为HQL语句的参数赋值//Query调用list方法访问查询的全部实例Listp1=sess.createQuery("fromPersonpwhereo.myEvents.title=:eventTitle").setString("eventTitle","很普通事情").list();//遍历查询的全部结果for(Iteratorpit=p1.iterator();pit.haxNext();){Personp=(Person)pit.next();System.out.println(p.getName());}//提交事务tx.commit();HibernateUtil.closeSession();}//第二个查询方法privatevoidfindPersonByHappenDate()throwsException{Sessionsess=HibernateUtil.currentSession();Transactiontx=sess.beginTransaction();//解析出Date对象SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");Datestart=sdf.parse("2007-11-27");System.out.println("系统开始通过日期查找人"+start);//通过Session的createQuery方法创建Query对象//设置参数//返回结果集Listpl=sess.createQuery("fromPersonpwherep.myEvents.happenDatebetween:firstDateand:endDate").setDate("firstDate",start).setDate("endDate",newDate()).list();//遍历结果集for(Iteratorpit=pl.iterator();pit.hasNext();){Personp=(Person)pit.next();System.out.println(p.getName());}tx.commit();HibernateUtil.closeSession();}}$下面介绍HQL语句的语法1.from子句fromPerson表明从Person持久化类中选出全部的实例。推荐:fromPersonasp2.select子句selectp.namefromPersonaspselectp.name.firstNamefromPersonaspselectnewlist(p.name,p.address)fromPersonaspselectnewClass