hibernate HQL語句總結

2021-09-09 03:33:10 字數 3778 閱讀 9014

1. 查詢整個對映物件所有字段

//直接from查詢出來的是乙個對映物件,即:查詢整個對映物件所有字段

string hql = "from users";

query query =session.createquery(hql);

list

users =query.list();

for(users user : users)

輸出結果為:

name1 : password1 : 1name2 : password2 : 2name3 : password3 : 3

2.查詢字段  

//查詢其中幾個字段

string hql = " select name,passwd from users";

query query =session.createquery(hql);

//預設查詢出來的list裡存放的是乙個object陣列

listlist =query.list();

for(object object : list)

輸出結果為:

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集合了

listlist =query.list();

for(list user : list)

/**輸出結果為:

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集合了

listlist =query.list();

for(map user : list)

/**輸出結果為:

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種方式

"name1");

"password1");

//第2種方式

query.setparameter(0, "name1",hibernate.string);

query.setparameter(1, "password1",hibernate.string);

list

list =query.list();

for(users users : list) //

條件查詢,自定義索引名(引數名):username,:password.通過setstring,setparameter設定引數

string hql = "from users where name=:username and passwd=:password";

query query =session.createquery(hql);

//第1種方式

"username", "name1");

"password", "password1");

//第2種方式,第3個引數確定型別

query.setparameter("username", "name1",hibernate.string);

query.setparameter("password", "password1",hibernate.string);

list

list =query.list();

for(users users : list)

//條件查詢,通過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

list =query.list();

for(users users : list)

7.update 資料

執行sql語句(為什麼要用sql語句,我想是為了執行某些複雜的sql語句吧) 

string sql="update table set field = 'test'"session session =hibernatesessionfactory.getsession();

session.createsqlquery(sql).executeupdate();

ts.commit();

執行hql語句   

hibernate hql語句如何獲取列舉型別

對列舉enum類中的valueof 方法的理解 檢視api文件知 返回帶指定名稱的指定列舉型別的列舉常量。名稱必須與在此型別中宣告列舉常量所用的識別符號完全匹配。不允許使用額外的空白字元。解釋上面紅色一行的意思 即 我下面的方法public listquerybystatus string stat...

hibernate hql語句如何獲取列舉型別

對列舉enum類中的valueof 方法的理解 檢視api文件知 返回帶指定名稱的指定列舉型別的列舉常量。名稱必須與在此型別中宣告列舉常量所用的識別符號完全匹配。不允許使用額外的空白字元。解釋上面紅色一行的意思 即 我下面的方法public listquerybystatus string stat...

Hibernate hql 多表查詢

string hql select c from col c userrole role where c.id role.columnid and c.id and role.userid this.gethibernatetemplate find hql,new object get 0 上面返...