hibernate -- HQL語句總結


1. 查詢整個映射對象所有字段

//直接from查詢出來的是一個映射對象,即:查詢整個映射對象所有字段   
        String hql = "from Users";   
        Query query = session.createQuery(hql);   
           
        List<Users> users = query.list();   
        for(Users user : users){   
            System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());   
        }   
  
 輸出結果為:   
name1 : password1 : 1  
name2 : password2 : 2  
name3 : password3 : 3  

2.查詢字段  

//查詢其中幾個字段   
        String hql = " select name,passwd from Users";   
        Query query = session.createQuery(hql);   
        //默認查詢出來的list里存放的是一個Object數組   
        List<Object[]> list = query.list();   
        for(Object[] object : list){   
            String name = (String)object[0];   
            String passwd = (String)object[1];   
               
            System.out.println(name + " : " + passwd);   
        }   
輸出結果為:   
name1 : password1   
name2 : password2   
name3 : password3  

 

3.修改默認查詢結果(query.list())不以Object[]數組形式返回,以List形式返回

//查詢其中幾個字段,添加new list(),注意list里的l是小寫的。也不需要導入包,這樣通過query.list()出來的list里存放的不再是默認的Object數組了,而是List集合了  
         String hql = " select new list(name,passwd) from Users";   
        Query query = session.createQuery(hql);   
        //默認查詢出來的list里存放的是一個Object數組,但是在這里list里存放的不再是默認的Object數組了,而是List集合了   
        List<List> list = query.list();   
        for(List user : list){   
            String name = (String)user.get(0);   
            String passwd = (String)user.get(1);   
               
            System.out.println(name + " : " + passwd);   
        }   
        /**  
        輸出結果為:  
         name1 : password1  
        name2 : password2  
        name3 : password3  
         */  

 

4.修改默認查詢結果(query.list())不以Object[]數組形式返回,以Map形式返回

//查詢其中幾個字段,添加new map(),注意map里的m是小寫的。也不需要導入包,這樣通過query.list()出來的list里存放的不再是默認的Object數組了,而是map集合了   
        String hql = " select new map(name,passwd) from Users";   
        Query query = session.createQuery(hql);   
        //默認查詢出來的list里存放的是一個Object數組,但是在這里list里存放的不再是默認的Object數組了,而是Map集合了   
        List<Map> list = query.list();   
        for(Map user : list){   
            //一條記錄里所有的字段值都是map里的一個元素,key是字符串0,1,2,3....,value是字段值   
            //如果將hql改為:String hql = " select new map(name as username,passwd as password) from Users";,那么key將不是字符串0,1,2...了,而是"username","password"了   
            String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形   
            String passwd = (String)user.get("1");   
               
            System.out.println(name + " : " + passwd);   
        }   
        /**  
        輸出結果為:  
         name1 : password1  
        name2 : password2  
        name3 : password3  
         */  

 

5.修改默認查詢結果(query.list())不以Object[]數組形式返回,以自定義類型返回

 

6.條件查詢

//條件查詢,參數索引值從0開始,索引位置。通過setString,setParameter設置參數   
        String hql = "from Users where name=? and passwd=?";   
        Query query = session.createQuery(hql);   
        //第1種方式   
//      query.setString(0, "name1");   
//      query.setString(1, "password1");   
        //第2種方式   
        query.setParameter(0, "name1",Hibernate.STRING);   
        query.setParameter(1, "password1",Hibernate.STRING);   
        List<Users> list = query.list();   
        for(Users users : list){   
            System.out.println(users.getId());   
        }   

 

//條件查詢,自定義索引名(參數名):username,:password.通過setString,setParameter設置參數   
        String hql = "from Users where name=:username and passwd=:password";   
        Query query = session.createQuery(hql);   
        //第1種方式   
//      query.setString("username", "name1");   
//      query.setString("password", "password1");   
        //第2種方式,第3個參數確定類型   
        query.setParameter("username", "name1",Hibernate.STRING);   
        query.setParameter("password", "password1",Hibernate.STRING);   
        List<Users> list = query.list();   
        for(Users users : list){   
            System.out.println(users.getId());   
        }  

  

//條件查詢,通過setProperties設置參數   
        String hql = "from Users where name=:username and passwd=:password";   
        Query query = session.createQuery(hql);   
        //MyUser類的2個屬性必須和:username和:password對應   
        MyUser myUser = new MyUser("name1","password1");   
        query.setProperties(myUser);   
        List<Users> list = query.list();   
        for(Users users : list){   
            System.out.println(users.getId());   
        }  

  

7.update 數據

           執行SQL語句(為什么要用SQL語句,我想是為了執行某些復雜的SQL語句吧) 

String sql="update Table set field = 'test'"
Session session = HibernateSessionFactory.getSession();
session.createSQLQuery(sql).executeUpdate();
ts.commit();

 

     

   執行HQL語句   

String hql="update Table set field = 'test'" 
Session session = HiberanteSessionFactory.getSession();
Transaction ts = session.beginTransaction();
Query query = session.createQuery(hql);
query.executeUpdate();
ts.commit();

 

 

 

  

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM