前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hibernate HQL 语句

Hibernate HQL 语句

作者头像
Hongten
发布2018-09-18 10:22:00
5970
发布2018-09-18 10:22:00
举报
文章被收录于专栏:HongtenHongten

/**  *  */ package com.b510.example;

import java.util.Iterator; import java.util.List; import java.util.Map;

import org.hibernate.Query; import org.hibernate.Session;

/**  *  * @author XHW  *  * @date 2011-6-18  *  */ public class HibernateTest {

 /**   * @param args   */  public static void main(String[] args) {   HibernateTest test=new HibernateTest();   test.list();   test.oneResult();   test.iterate();   test.iterateHuancun();   test.jiChenChaXun();   test.touYinChaXun();   test.touYinChaXunMap();   test.touYinChaXunObject();   test.checkDistinct();   test.where(); }  public void list(){   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from User");   query.setMaxResults(2);//返回2条记录   query.setFirstResult(2);//从第2条记录开始   List<User> list=query.list();   session.getTransaction().commit();   for(User user:list){    System.out.println(user.getId()+", "+user.getUsername()+",  "+user.getPassword());   }  }

 public void oneResult(){   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from User");   query.setMaxResults(1);//返回1条记录   query.setFirstResult(2);//从第2条记录开始   User user=(User)query.uniqueResult();   System.out.println(user.getId()+", "+user.getUsername());   session.getTransaction().commit();  }  public void iterate(){//此方法的SQL语句格式为  n+1   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from User");   Iterator it=query.iterate();   while(it.hasNext()){    User user=(User)it.next();    System.out.println(user.getId()+", "+user.getUsername()+",  "+user.getPassword());   }   session.getTransaction().commit();  }  public void iterateHuancun(){   // 充分利用Hibernate中的缓存数据 如果Hibernate缓存中不存在数据,则使用list方法执行效率更高   //List<User> list=query.list();   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from User");   Iterator it=query.iterate();   while(it.hasNext()){    User user=(User)it.next();    System.out.println(user.getId()+", "+user.getUsername()+",  "+user.getPassword());   }   System.out.println("-----------------------------------------------");   it=query.iterate();   while(it.hasNext()){    User user=(User)it.next();    System.out.println(user.getId()+", "+user.getUsername()+",  "+user.getPassword());   }     session.getTransaction().commit();  }

 public void jiChenChaXun(){   /**    *  HQL中持久化类的继承查询    hibernate.cfg.xml 中的配置文件    <mapping resource="com/b510/example/User.hbm.xml" />    <mapping resource="com/b510/example/Profile.hbm.xml" />    */   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from java.lang.Object");   List<Object> list=query.list();   for(Object o:list){    System.out.println(o.getClass().getName());   }     session.getTransaction().commit();  }  public void touYinChaXun(){//投影查询  返回的是一个Object数组   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("select id,username,password from User");     List<Object[]> list=query.list();    session.getTransaction().commit();

   for(Object[] o:list){     System.out.println(o[0]+",  "+o[1]+",  "+o[2]);    }  }  public void touYinChaXunObject(){   //投影查询 返回的是一个对象   /**    * 在User.java持久化类中添加构造方法才能执行,否则就会报错    * public User(Integer id,String username,String password){    * this.id=id;    * this.username=username;    * this.password=password;    * }    */   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("select new User(id,username,password) from User");     List<User> list=query.list();    session.getTransaction().commit();

   for(User user:list){     System.out.println(user.getId()+",  "+user.getUsername()+",  "+user.getPassword());    }  }

 public void touYinChaXunMap(){   //使用Map查询   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("select new Map(u.id as id,u.username as name) from User as u");   //可以把as省略   //Query query=session.createQuery("select new Map(u.id as id,u.username as name) from User u");     List<Map> list=query.list();

  for(Map map:list){     System.out.println(map.get("id")+",   "+map.get("name"));    }    session.getTransaction().commit();  }  public void checkDistinct(){   //使用distinct查询   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("select distinct username from User");   List<String> list=query.list();

  for(String name:list){     System.out.println(name);    }    session.getTransaction().commit();  }  public void where(){   //使用where查询   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from User where id not between 200 and 2000");   List<User> list=query.list();

  for(User user:list){     System.out.println(user.getId()+user.getUsername());    }   //投影查询 中使用where子句   query=session.createQuery("select username from User where id=2");   List<String> listname=query.list();

  for(String name:listname){     System.out.println(name);    }   //in查询   query=session.createQuery("from User where username in ('Hongten','Hanyuan','dfgd')");   List<User> listin=query.list();

  for(User user:listin){     System.out.println(user.getId()+user.getUsername());    }   //like查询   query=session.createQuery("from User where username not like 'Hon%'");   List<User> listlike=query.list();

  for(User user:listlike){     System.out.println(user.getId()+user.getUsername());    }   //null查询   query=session.createQuery("from User where password is null");   List<User> listnull=query.list();

  for(User user:listnull){     System.out.println(user.getId()+user.getUsername());    }   //and查询   query=session.createQuery("from User where password is not null and id<5");   List<User> listand=query.list();   for(User user:listand){     System.out.println(user.getId()+user.getUsername()+user.getPassword());    }   //order by   query=session.createQuery("from User order by username,id desc");   List<User> listorderby=query.list();

  for(User user:listorderby){     System.out.println(user.getId()+user.getUsername());    }   //使用"?"号 作为参数占位符,一条HQL语句中可以使用多个?   //query.setInteger(0,2)   //query.setString(0,"Hongten")   query=session.createQuery("select username from User where username=?");   query.setString(0,"Hongten");   List<String> listwenhao=query.list();   for(String name:listwenhao){     System.out.println(name);    }    session.getTransaction().commit();  } }

结果:

Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_ limit ?,         ? 3, Hanyuan,  5645645 4, dfgd,  5645645 Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_ limit ?,         ? 3, Hanyuan Hibernate:     select         user0_.id as col_0_0_     from         users.user user0_ Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 1, Hongten,  123 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 2, Hanyuan,  5645645 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 3, Hanyuan,  5645645 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 4, dfgd,  5645645 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 5, dfgd,  5645645 Hibernate:     select         user0_.id as col_0_0_     from         users.user user0_ Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 1, Hongten,  123 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 2, Hanyuan,  5645645 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 3, Hanyuan,  5645645 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 4, dfgd,  5645645 Hibernate:     select         user0_.id as id0_0_,         user0_.username as username0_0_,         user0_.password as password0_0_     from         users.user user0_     where         user0_.id=? 5, dfgd,  5645645 ----------------------------------------------- Hibernate:     select         user0_.id as col_0_0_     from         users.user user0_ 1, Hongten,  123 2, Hanyuan,  5645645 3, Hanyuan,  5645645 4, dfgd,  5645645 5, dfgd,  5645645 Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_ Hibernate:     select         profile0_.id as id1_,         profile0_.user_id as user2_1_,         profile0_.email as email1_,         profile0_.phone as phone1_,         profile0_.mobile as mobile1_,         profile0_.address as address1_,         profile0_.postcode as postcode1_     from         users.profile profile0_ com.b510.example.User com.b510.example.User com.b510.example.User com.b510.example.User com.b510.example.User com.b510.example.Profile com.b510.example.Profile com.b510.example.Profile com.b510.example.Profile com.b510.example.Profile Hibernate:     select         user0_.id as col_0_0_,         user0_.username as col_1_0_,         user0_.password as col_2_0_     from         users.user user0_ 1,  Hongten,  123 2,  Hanyuan,  5645645 3,  Hanyuan,  5645645 4,  dfgd,  5645645 5,  dfgd,  5645645 Hibernate:     select         user0_.id as col_0_0_,         user0_.username as col_1_0_     from         users.user user0_ 1,   Hongten 2,   Hanyuan 3,   Hanyuan 4,   dfgd 5,   dfgd Hibernate:     select         user0_.id as col_0_0_,         user0_.username as col_1_0_,         user0_.password as col_2_0_     from         users.user user0_ 1,  Hongten,  123 2,  Hanyuan,  5645645 3,  Hanyuan,  5645645 4,  dfgd,  5645645 5,  dfgd,  5645645 Hibernate:     select         distinct user0_.username as col_0_0_     from         users.user user0_ Hongten Hanyuan dfgd Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_     where         user0_.id not between 200 and 2000 1Hongten 2Hanyuan 3Hanyuan 4dfgd 5dfgd Hibernate:     select         user0_.username as col_0_0_     from         users.user user0_     where         user0_.id=2 Hanyuan Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_     where         user0_.username in (             'Hongten' , 'Hanyuan' , 'dfgd'         ) 1Hongten 2Hanyuan 3Hanyuan 4dfgd 5dfgd Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_     where         user0_.username not like 'Hon%' 2Hanyuan 3Hanyuan 4dfgd 5dfgd Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_     where         user0_.password is null Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_     where         (             user0_.password is not null         )         and user0_.id<5 1Hongten123 2Hanyuan5645645 3Hanyuan5645645 4dfgd5645645 Hibernate:     select         user0_.id as id0_,         user0_.username as username0_,         user0_.password as password0_     from         users.user user0_     order by         user0_.username,         user0_.id desc 5dfgd 4dfgd 3Hanyuan 2Hanyuan 1Hongten Hibernate:     select         user0_.username as col_0_0_     from         users.user user0_     where         user0_.username=? Hongten

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-06-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档