http://wlh269.iteye.com/blog/322050
连接查询(重要)
* 内连接
* 外连接(左连接/右连接)
参见:JoinQueryTest.java
内连接有三种:inner join ,join,“=”
- packagecom.wlh.hibernate;
- importjava.util.Iterator;
- importjava.util.List;
- importjunit.framework.TestCase;
- importorg.hibernate.Session;
- publicclassJoinQueryTestextendsTestCase{
- /**
- *内联结
- */
- publicvoidtestQuery1(){
- Sessionsession=null;
- try{
- session=HibernateUtils.getSession();
- session.beginTransaction();
- //====关键字join==========//
- Liststudents=session.createQuery("selects.name,c.namefromStudentsjoins.classesc").list();
- for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]o=(Object[])iter.next();
- System.out.println("id="+o[0]+",o[1]"+o[0]);
- }
- session.getTransaction().commit();
- }catch(Exceptione){
- e.printStackTrace();
- session.getTransaction().rollback();
- }finally{
- HibernateUtils.closeSession(session);
- }
- }
- /**
- *内联结
- */
- publicvoidtestQuery2(){
- Sessionsession=null;
- try{
- session=HibernateUtils.getSession();
- session.beginTransaction();
- //=======关键字innerjoin默认就是内连接,所以inner可以加上,也可以省略======//
- Liststudents=session.createQuery("selects.name,c.namefromStudentsinnerjoins.classesc").list();
- for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]o=(Object[])iter.next();
- System.out.println("id="+o[0]+",o[1]"+o[0]);
- }
- session.getTransaction().commit();
- }catch(Exceptione){
- e.printStackTrace();
- session.getTransaction().rollback();
- }finally{
- HibernateUtils.closeSession(session);
- }
- }
- /**
- *内联结
- */
- publicvoidtestQuery3(){
- Sessionsession=null;
- try{
- session=HibernateUtils.getSession();
- session.beginTransaction();
- //===========用"="实现内联===========//
- Liststudents=session.createQuery("selects.name,c.namefromStudents,Classescwheres.classes.id=c.id").list();
- for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]o=(Object[])iter.next();
- System.out.println("id="+o[0]+",o[1]"+o[0]);
- }
- session.getTransaction().commit();
- }catch(Exceptione){
- e.printStackTrace();
- session.getTransaction().rollback();
- }finally{
- HibernateUtils.closeSession(session);
- }
- }
- [b][color=red]外联接:能够查出2个表之间不相互关联的记录[/color][/b]
- <PREclass=javaname="code"></PRE>
- <BR>
- <BR>/**
- <BR>*外联结
- <BR>*/
- <BR>publicvoidtestQuery4(){
- <BR>Sessionsession=null;
- <BR>try{
- <BR>session=HibernateUtils.getSession();
- <BR>session.beginTransaction();
- <BR>//查询出所有的学生(包括没有班级的学生)
- <BR>Liststudents=session.createQuery("selects.name,c.namefromStudentsleftjoins.classesc").list();
- <BR>for(Iteratoriter=students.iterator();iter.hasNext();){
- <BR>Object[]o=(Object[])iter.next();
- <BR>System.out.println("id="+o[0]+",o[1]="+o[1]);
- <BR>}
- <BR>session.getTransaction().commit();
- <BR>}catch(Exceptione){
- <BR>e.printStackTrace();
- <BR>session.getTransaction().rollback();
- <BR>}finally{
- <BR>HibernateUtils.closeSession(session);
- <BR>}
- <BR>}
- <BR>
- <BR>
- <BR>
- <BR>/**
- <BR>*外联结
- <BR>*/
- <BR>publicvoidtestQuery5(){
- <BR>Sessionsession=null;
- <BR>try{
- <BR>session=HibernateUtils.getSession();
- <BR>session.beginTransaction();
- <BR>//查询出所有的班级,(包括没有学生的班级)
- <BR>Liststudents=session.createQuery("selects.name,c.namefromStudentsrightjoins.classesc").list();
- <BR>for(Iteratoriter=students.iterator();iter.hasNext();){
- <BR>Object[]o=(Object[])iter.next();
- <BR>System.out.println("id="+o[0]+",o[1]="+o[1]);
- <BR>}
- <BR>session.getTransaction().commit();
- <BR>}catch(Exceptione){
- <BR>e.printStackTrace();
- <BR>session.getTransaction().rollback();
- <BR>}finally{
- <BR>HibernateUtils.closeSession(session);
- <BR>}
- <BR>}
- <BR>
- <BR>
- <BR>}