1. 程式人生 > >HQL查詢語句用法@Query

HQL查詢語句用法@Query

1.       HQL查簡單詢語句用法Query

//如果查詢具體的一個或兩個資料(不是全部資料)就要在HQL語句中加SELECT如果是全部查詢就省略了直接FROM開頭

SQL語句一樣

hql =" FROM Person  p WHERE p.age/3 =10  "

hql =" FROM Person  p WHERE( p.age>10) and(p.name =’lxh’)   "

hql =" FROM Person  p WHERE p.name is not null  "

hql =" FROM Person  p WHERE p.age between 20 and  30   "

hql =" FROM Person  p WHERE p.name in (‘lch’,’ldf’)  "

hql =" FROM Person  p WHERE( p.age>10) and(p.name =’lxh’)   "

hql =" FROM Person  p WHERE p.name like  ‘l%’  "

排列

hql =" FROM Person  p order by p.age   "

hql =" FROM Person  p order by p.age desc  "降序排列

hql =" FROM Person  p order by p.age desc p.name  "先按降序再按升序排列

 

分組

hql =" SELECT p.sex,avg(p.age)  FROM Person  p group by p.sex  "

hql =" SELECT p.sex,avg(p.age)  FROM Person  p group by p.sex having avg(p.age) >20  "

 

更新 ,刪除

Update User set name =’lxh’ where  name =’lll’

hql =" Delete Person WHERE name = ‘lxh’ "

hql =" FROM Person  p WHERE p.name like  ‘l%’  "

hql =" FROM Person  p WHERE p.name like  ‘l%’  "

分頁輸出

 

Java程式碼   收藏程式碼
  1. //分頁輸出(從輸出資料中找中間一個區間的一段輸出)  
  2.        Configuration conf = new Configuration().configure();  
  3.        SessionFactory factory = conf.buildSessionFactory();  
  4.        Session session = factory.openSession();  
  5.         Person u = null;  
  6.          
  7.        //通過Query介面全部查詢  
  8.        List ll =null;  
  9.        String hql2 ="FROM Person as p";  
  10.        Query qq = session.createQuery(hql2);  
  11.          
  12.        qq.setFirstResult(0);//從第一條資料開始  
  13.        qq.setMaxResults(2); //輸出兩條資料  
  14.          
  15.          
  16.        ll = qq.list();  
  17.          
  18.        //固定模式輸出  
  19.        Iterator iter1 =ll.iterator();  
  20.        while(iter1.hasNext()){  
  21.              
  22.            u = (Person)iter1.next();  
  23.            System.out.println(u.getName());  
  24.    
  25.   
  26.    
  27.   
  28.    
  29.   
  30. 例子  
  31.    
  32.   
  33.        Session session = new Configuration().configure().buildSessionFactory().openSession();  
  34.        Criteria cri = session.createCriteria(Person.class);  
  35.          
  36.        //String hql ="SELECT distinct p.sex FROM Person AS p  ";  
  37.        String hql ="SELECT COUNT(p.id) FROM Person AS p  ";//求記錄數  
  38.        Query q =session.createQuery(hql);  
  39.          
  40.        List all = q.list();  
  41.        Iterator iter = all.iterator();  
  42.        while(iter.hasNext()){  
  43.              
  44.            System.out.println(iter.next());  
  45.    
  46.   
  47.    
  48.   
  49.    
  50.   
  51. Configuration conf = new Configuration().configure();  
  52.        SessionFactory factory = conf.buildSessionFactory();  
  53.        Session session = factory.openSession();  
  54.         User u = null;  
  55.              
  56.        //通過Query介面查詢單個數據  
  57.        List l = null;  
  58.        String hql ="FROM User as p WHERE p.id = ?";//必須是User類名,而不是USERS表名,因為查詢的是物件,而不是表,物件就對應著表  
  59.        Query q =  session.createQuery(hql);  
  60.          
  61.        q.setString(0,"111");  
  62.         l = q.list();//q.list();查詢語句  
  63.            
  64.         //固定模式輸出  
  65.         Iterator iter =l.iterator();  
  66.        if(iter.hasNext()){  
  67.          u = (User)iter.next();  
  68.        }  
  69.        System.out.println(u.getName());//查詢操作  
  70.           
  71.          
  72.       
  73.        //通過Query介面全部查詢  
  74.        List ll =null;  
  75.        String hql2 ="FROM User as p";  
  76.        Query qq = session.createQuery(hql2);  
  77.        ll = qq.list();  
  78.          
  79.        //固定模式輸出  
  80.        Iterator iter1 =ll.iterator();  
  81.        while(iter1.hasNext()){  
  82.              
  83.            u = (User)iter1.next();  
  84.            System.out.println(u.getName());  
  85.        }  
  86.          
  87.         //模糊查詢  
  88.        List lll =null;  
  89.        String hql3 = "FROM User as p WHERE p.name LIKE ?";  
  90.        Query qqq = session.createQuery(hql3);  
  91.        qqq.setString(0"%"+"c"+"%");  
  92.         lll=    qqq.list();  
  93.         //固定模式輸出  
  94.         Iterator iter2 =lll.iterator();  
  95.        if(iter2.hasNext()){  
  96.          u = (User)iter2.next();  
  97.        }  
  98.        System.out.println(u.getName());//查詢操作