hql查询

  1. package Usertest;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.hibernate.HibernateException;  
  6. import org.hibernate.Session;  
  7. import org.hibernate.SessionFactory;  
  8. import org.hibernate.Transaction;  
  9. import org.hibernate.query.Query;  
  10. import org.junit.Test;  
  11.   
  12. import text.User;  
  13.   
  14. public class Hql {  
  15.       
  16.         @Test    
  17.         public void Query1(){//搜索User中的所有属性输出姓名  
  18.             // TODO Auto-generated method stub  
  19.             SessionFactory sf = null;     
  20.             Session session = null;  
  21.             Transaction ts = null;  
  22.             try {  
  23.                 sf = HibernateUtil.getSessionFactory();  
  24.                 session = sf.getCurrentSession();  
  25.                 ts = session.beginTransaction();  
  26.                 User user=new User();  
  27.                 Query query = session.createQuery("from User");  
  28.                 List users = query.list();  
  29.                 for(int i=0;i<users.size();i++)  
  30.                 {  
  31.                         user =(User)users.get(i);  
  32.                         System.out.println(i+"--"+user.getUsername());  
  33.                 }  
  34.                   
  35.                 ts.commit();  
  36.             } catch (HibernateException e) {  
  37.                 // TODO Auto-generated catch block  
  38.                 if(ts != null)  
  39.                 {  
  40.                     ts.rollback();  
  41.                 }  
  42.                 e.printStackTrace();  
  43.             }  
  44.         }  
  45.         @Test    
  46.         //搜索多个属性返回数组  
  47.         public void Queryattributes(){  
  48.             // TODO Auto-generated method stub  
  49.             SessionFactory sf = null;     
  50.             Session session = null;  
  51.             Transaction ts = null;    
  52.             try {  
  53.                 sf = HibernateUtil.getSessionFactory();  
  54.                 session = sf.getCurrentSession();  
  55.                 ts = session.beginTransaction();  
  56.                 User user=new User();  
  57.                 Query query = session.createQuery("select u.username, u.password from User as u");  
  58.                 List users = query.list();  
  59.                 for(int i=0;i<users.size();i++)  
  60.                 {  
  61.                     Object obj[] =(Object[])users.get(i);  
  62.                     System.out.println(obj[0]+"的密码为:"+obj[1]);  
  63.                 }  
  64.                   
  65.   
  66.                 ts.commit();  
  67.             } catch (HibernateException e) {  
  68.                 // TODO Auto-generated catch block  
  69.                 if(ts != null)  
  70.                 {  
  71.                     ts.rollback();  
  72.                 }  
  73.                 e.printStackTrace();  
  74.             }  
  75.         }  
  76.         @Test   
  77.         //指定新建一个对象传回,注意,此处需要在实体类中创建含参构造方法和无参构造方法,无参构造方法是为了其他语句使用,因为系统默认是调用无参的构造方法  
  78.         public void Querynewattributes(){  
  79.             // TODO Auto-generated method stub  
  80.             SessionFactory sf = null;     
  81.             Session session = null;  
  82.             Transaction ts = null;  
  83.             try {  
  84.                 sf = HibernateUtil.getSessionFactory();  
  85.                 session = sf.getCurrentSession();  
  86.                 ts = session.beginTransaction();  
  87.                 
  88.                 Query query = session.createQuery("select new User(u.username,u.password) from User as u");  
  89.                 List users = query.list();  
  90.                 for(int i=0;i<users.size();i++)  
  91.                 {  
  92.                     User user =(User)users.get(i);  
  93.                     System.out.println(user.getUsername()+"的密码为:"+user.getPassword());  
  94.                       
  95.                }  
  96.                 ts.commit();  
  97.             } catch (HibernateException e) {  
  98.                 // TODO Auto-generated catch block  
  99.                 if(ts != null)  
  100.                 {  
  101.                     ts.rollback();  
  102.                 }  
  103.                 e.printStackTrace();  
  104.             }  
  105.         }  
  106.         @Test   
  107.         public void countattributes(){//返回共有多少条记录,平均年龄以及最大年龄  
  108.             // TODO Auto-generated method stub  
  109.             SessionFactory sf = null;     
  110.             Session session = null;  
  111.             Transaction ts = null;  
  112.               
  113.             try {  
  114.                 sf = HibernateUtil.getSessionFactory();  
  115.                 session = sf.getCurrentSession();  
  116.                 ts = session.beginTransaction();  
  117.               
  118.                 Query query = session.createQuery("select count(*) from User");  
  119.                 Object count  =  (Object)query.uniqueResult();  
  120.                 System.out.println("共有"+count+"条记录");  
  121.   
  122.                 query = session.createQuery("select avg(u.age) from User u");  
  123.                 Number average =(Number)query.uniqueResult();  
  124.                 System.out.println("平均年龄为:"+average);  
  125.                   
  126.                 query = session.createQuery("select max(u.age) from User u");  
  127.                             Number max =(Number)query.uniqueResult();  
  128.                             System.out.println("最大年龄为:"+max);  
  129.   
  130.                 ts.commit();  
  131.             } catch (HibernateException e) {  
  132.                 // TODO Auto-generated catch block  
  133.                 if(ts != null)  
  134.                 {  
  135.                     ts.rollback();  
  136.                 }  
  137.                 e.printStackTrace();  
  138.             }  
  139.         }  
  140.         @Test   
  141.         //提取第5-9个对象  
  142.         public void  query(){  
  143.             // TODO Auto-generated method stub  
  144.             SessionFactory sf = null;     
  145.             Session session = null;  
  146.             Transaction ts = null;  
  147.               
  148.             try {  
  149.                 sf = HibernateUtil.getSessionFactory();  
  150.                 session = sf.getCurrentSession();  
  151.                 ts = session.beginTransaction();  
  152.                 Query  query=session.createQuery("from User");  
  153.                 query.setFirstResult(4);  
  154.                 query.setMaxResults(5);  
  155.                 List result=query.list();  
  156.                  for(int i=0;i<result.size();i++)  
  157.                     {  
  158.                         User user =(User)result.get(i);  
  159.                         System.out.println(  user.getId()+" "+user.getUsername()+"--"+user.getPassword());  
  160.                           
  161.                    }  
  162.   
  163.                 ts.commit();  
  164.             } catch (HibernateException e) {  
  165.                 // TODO Auto-generated catch block  
  166.                 if(ts != null)  
  167.                 {  
  168.                     ts.rollback();  
  169.                 }  
  170.                 e.printStackTrace();  
  171.             }  
  172.         }  
  173.         @Test   
  174.         //嵌套子查询  
  175.         public void doublequery(){  
  176.             // TODO Auto-generated method stub  
  177.             SessionFactory sf = null;     
  178.             Session session = null;  
  179.             Transaction ts = null;  
  180.               
  181.             try {  
  182.                 sf = HibernateUtil.getSessionFactory();  
  183.                 session = sf.getCurrentSession();  
  184.                 ts = session.beginTransaction();  
  185.                   
  186.             Query query = session.createQuery("from User u where u.age>(select avg(age) from User)");  
  187.             List users = query.list();  
  188.             for(int i=0;i<users.size();i++)  
  189.             {  
  190.                 User user =(User)users.get(i);  
  191.                  System.out.println(user.getId()+"--姓名:"+user.getUsername()+"--年龄"+user.getAge());  
  192.                             }   
  193.   
  194.                 ts.commit();  
  195.             } catch (HibernateException e) {  
  196.                 // TODO Auto-generated catch block  
  197.                 if(ts != null)  
  198.                 {  
  199.                     ts.rollback();  
  200.                 }  
  201.                 e.printStackTrace();  
  202.             }  
  203.         }  
  204. }  

注意,创建新对象需要在实体类中创建含参构造方法和无参构造方法,无参构造方法是为了其他语句使用,因为系统默认是调用无参的构造方法

[java]  view plain  copy
  1. public User(){}  
  2. public User(int id, String username, String password, String gender, int age) {  
  3.   
  4.     this.id = id;  
  5.     this.username = username;  
  6.     this.password = password;  
  7.     this.gender = gender;  
  8.     this.age = age;  
  9. }  

搜索user中的所有属性输出姓名

搜索多个属性返回数组


统计总的记录数以及年龄的最大值和平均值输出结果


嵌套子查询


提取第5-9个对象结果

猜你喜欢

转载自blog.csdn.net/qq_36937005/article/details/80665234