[英]ArrayList or Hashset
ArrayList queryParms = new ArrayList();
StringBuffer sql = new StringBuffer();
sql.append(
"SELECT A.FLDREC_NUM, " +
"@CHARDATE(A.FLDDATE), " +
"T.FLDDESCR, @DEC(A.FLDLEVEL,3) " +
" FROM @SCHEMAALCOHOL A LEFT OUTER JOIN @SCHEMADRUGCAUS T " +
" ON A.FLDREASON = T.FLDCODE " +
" WHERE A.FLDEMPLOYEE = ? " +
" ORDER BY A.FLDDATE DESC"
);
queryParms.add(new Long(empRec));
我可以使用HashSet代替上面的ArrayList,並且在性能方面是否有意義?
查詢的作用是什么,我們需要將查詢追加到StringBuffer中。 為什么我不能直接添加到ArrayList?
通常,您會希望使用ArrayList
作為查詢參數-因為順序很重要。 當您只有一個參數(如此處所示)時,這不是問題-但我絕對會使用一個列表來保持一致性。
至於使用StringBuffer
,這里沒有顯示您正在使用sql
做什么。 如果您不追加任何其他內容,則可以使用簡單的String
...,但不會將其添加到ArrayList
,因為它是查詢本身,而不是查詢參數 。
最后,我建議使用泛型,例如
ArrayList<Long> queryParameters = new ArrayList<Long>();
至於性能,請考慮:
使用StringBuilder(而不是StringBuffer)是不同步的,也不是問題,因為您正在為每個請求創建一個新的StringBuilder()。 如果與每個請求使用的語句相同,則應為全局聲明的最終String。
正如Jon所建議的,將ArrayList與Generics一起使用。 queryParams用作用於查詢數據庫的QueryService實現的一部分。 看起來,這是一個預編譯的sql查詢,查詢參數的順序在運行時很重要。 HashSet不保證順序。
更高效:
sql.append("SELECT A.FLDREC_NUM, ");
sql.append("@CHARDATE(A.FLDDATE), ");
......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.