hibernate 之 HQL語句總結【轉】

來源:互聯網
上載者:User

標籤:users   style   設定   ring   .exe   object   comm   passwd   元素   

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.條件查詢

//條件查詢,參數索引值從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();

 

hibernate 之 HQL語句總結【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.