- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SSH企业培训之高级Hibernate查询
高级Hibernate查询 刘晓涛 介绍 讲授: 刘晓涛 Tel: Email: lxt008@163.com Blog: /liuxiaotao008 MSN: lxt008@ 本章目标 命名查询等。 存储过程。 HQL连接查询。 其他HQL查询。 换掉Hibernate产生的sql语句。 N+1查询问题。 笛卡儿积问题。 过滤查询。 命名查询与原生/本地SQL查询 !-- 其中包含HQL语句 -- query name=queryByNo ![CDATA[ from Emp emp where emp.empno=:empno ]] /query !-- 其中包含原生SQL语句 -- sql-query name=queryEmp ![CDATA[ select * from emp where empno=:empno ]] return class=com.lxt008.dao.Emp/return /sql-query getNamedQuery() Query hqlQuery=session.getNamedQuery(queryByNo); Emp emp=new Emp(); emp.setEmpno(new Long(7788)); //设置参数 hqlQuery.setProperties(emp); Iterator it=hqlQuery.iterate(); while(it.hasNext()) { Emp resultEmp=(Emp)it.next(); System.out.println(+resultEmp.getEname()+); } getNamedQuery() Query sqlQuery=session.getNamedQuery(queryEmp); //设置参数 sqlQuery.setParameter(empno, 7934); List empList=sqlQuery.list(); Iterator it1=empList.iterator(); while(it1.hasNext()) { Emp resultEmp=(Emp)it1.next(); System.out.println(+resultEmp.getEname()+); } HQL连接查询 默认是inner join,inner可以省略。 List students = session.createQuery(select , from Student s inner join s.classes c).list(); 左外连接 List students = session.createQuery(select , from Classes c left join c.students s).list(); 右外连接 List students = session.createQuery(select , from Classes c right join c.students s).list(); 其他HQL查询方式 对象导航查询: List students = session.createQuery(select from Student s where like %t%).list(); 查询实体对象: List students = session.createQuery(select new Student(id, name) from Student).list(); 需要相应构造器才行: public Student(int id, String name) { this.id = id; = name; } 其他HQL查询方式 给in使用setParameterList设置范围: List students = session.createQuery(select s.id, from Student s where s.id in(:myids)) .setParameterList(myids, new Object[]{1, 2, 3, 4, 5}) .list(); 不提倡使用update/delete: session.createQuery(update Student s set =? where s.id = ?) .setParameter(0, lxt008) .setPa
文档评论(0)