hibernate中對(duì)動(dòng)態(tài)參數(shù)的綁定提供了豐富的支持。 其中參數(shù)綁定有兩種形式。 (1)按參數(shù)的名字進(jìn)行綁定 在hql查詢(xún)語(yǔ)句中定義命名參數(shù),以“ :”開(kāi)頭,形式如下: Query query =session.createQuery(" from Customer as c where c.name =:customerName"); 上面的HQL語(yǔ)句定義了“customerName”命名參數(shù),接下來(lái)調(diào)用Query的setXXX()方法來(lái)綁定參數(shù). query.setString("customerName",name); (2) 按參數(shù)位置綁定 在HQL查詢(xún)語(yǔ)句中 用“?”來(lái)定義參數(shù)的位置,形式如下: Query query =session.createQuery(" from Customer as c where c.name =?"); 上面的HQL語(yǔ)句 定義了一個(gè)參數(shù),參數(shù)的第一個(gè)位置為0,接下來(lái)調(diào)用Query的setXXX()方法來(lái)綁定參數(shù). query.setString(0 , name); 優(yōu)先考慮按名字綁定的方式。
Hibernate提供了3個(gè)特殊的參數(shù)綁定方法。 (1)setEntity()方法 : 把參數(shù)與一個(gè)持久化類(lèi)的實(shí)例綁定。例如:以下setEntity()方法把“customer”命名參數(shù)與一個(gè)Customer對(duì)象綁定 session.createQuery("from Order o where o.customer = :customer") .setEntity("customer",customer).list(); (2) setParameter()方法:綁定任意類(lèi)型的參數(shù) Query query = session.createQuery( " from Order o where o.id=:id and o.orderNumber like :orderNumber"); query.setParameter(" id" , 1); // query.setParameter(" orderNumber",orderNumber,Hibernate.STRING); //hibernate 3.0的寫(xiě)法。 query.setParameter(" orderNumber",orderNumber, StringType.INSTANCE); //hibernate 4.2的寫(xiě)法 (3)setProperties() 方法:用于把參數(shù)名稱(chēng)與一個(gè)對(duì)象的屬性值綁定,如: Customer c=new Customer(); c.setName("Tom"); c.setAge(20); Query query =session.createQuery(" from Customer as c where c.name = : name and c.age = :age") query.setProperties(c) ;
|
|
來(lái)自: 一本正經(jīng)地胡鬧 > 《待分類(lèi)》