關於HQL中引數傳遞與投影的問題

2021-07-24 22:53:23 字數 1136 閱讀 2096

在我們傳統的sql語句中,經常給sql語句傳遞引數來實現查詢,但這樣很容易產生sql注入,也就是說,如果使用者在輸入查詢條件的輸入框寫了一些sql語句,將會給我們帶來很大的損失。所以hql中提出了2中傳參方式。

(1)位置引數

string hql = "from emp where name like ? and age< ?";

session session = hibernateutil.getsession();

listlist = session.createquery(hql).setparameter(0, name + "%")

.setparameter(1, age).list();

通過?佔位符來傳遞引數,這樣不好的地方在於也很順序傳遞引數。

(2)命名引數

string hql = "from emp where name like :name and age<:age";

session session = hibernateutil.getsession();

listlist = session.createquery(hql).setparameter("name",

name + "%").setparameter("age", age).list();

這種方式成功解決了位置引數的不足,很完美。

投影的問題:所謂投影就是查詢部分字段,比如:

string hql="select name,age from emp where name like ?";

query query=session.createquery(hql).setparameter(0, "張%");

listlist=query.list();

但是這樣做的返回值是個object陣列,我們都希望返回的是乙個物件,這樣會比較好處理。

要解決這個問題,我們必須採用建構函式來完成。具體**如下:

string hql="select new emp(age,name) from emp where name like ?";

query query=session.createquery(hql).setparameter(0, "張%");

listlist=query.list();

這樣可以成功解決這個問題。

struts中submit標籤傳遞引數問題

align center s submit value 刪除 class searchbutton method deleteauthbyempid type hidden name empauthid value s property value authorization.empid s pro...

關於引數的傳遞

解釋引數在方法中的傳遞過程,並通過記憶體解析圖的 方式,描繪出方法執行時記憶體的變化。可以使用今天課堂 來解釋 public class demo11 public static void main string args 此方法最後的輸出是 fun1 i 15 fun1 j 25 main i 1...

MFC中關於CString 引數傳遞

當定義類介面時,必須確定為成員函式確定引數傳遞約定。現在有一些傳遞和返回 cstring 物件的標準規則。如果遵循作為函式輸入的字串和作為函式輸出的字串中所述的規則,那麼將得到正確而又有效的 作為函式輸入的字串 如果字串是某個函式的輸入,在大多數情況下,最好將該字串函式引數宣告為 lpctstr。在...