另一種解決方案是將查詢存儲在SQL文件將其作爲資源消耗。以相若方式的圖像(我們不存儲爲Base64編碼字符串),我們可以從外部存儲他們我們的Java(我們應該,因爲他們是不是Java,他們是SQL)
private String getTextResource(String Resource){
InputStream in = getClass().getResourceAsStream(Resource);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
ArrayList<String> lines = new ArrayList<String>();
try {
while((line = reader.readLine()) != null){
lines.add(line);
}
} catch (IOException e) {
return null;
}
return Joiner.on("\n").join(lines);
}
public float getCurrentRiskAssessmentFactor(){
String sql = getTextResource("MyComplexSQL.sql");
return db.getQueryStatment(sql).get(0);
}
使用這種技術可以讓您以可測試的格式維護複雜的查詢。 SQL文件可以在您最喜歡的SQL編輯器中打開並測試,也可以獨立運行(針對數據庫)。這避免了在工具之間切換時的轉錄錯誤和工作量。
我和一位開發人員一起工作,他們儘可能抽象整個數據庫訪問,以便只能指定SQL資源,而不能傳入原始SQL。
另外,安裝Eclipse DTP。這將允許你直接從Eclipse運行查詢(或者至少給你語法高亮)。
http://www.eclipse.org/datatools/downloads.php
優化提示:如果你這樣做,它可能是最好使用某種延遲加載/緩存機制,爲SQL
是的,我現在做兩個搜索和替換操作,一個用於''+'和一個用於''',只是尋找一個單一的操作。 – user113215
嗯......你總是可以用+和「來創建一個正則表達式,然後在一個語句中替換這兩個表達式,但是我不知道它是否真的會爲你節省任何代碼或者在上面兩行代碼中遇到麻煩 – Ampt
是的,在這裏可能不是真的節省時間注意,刪除'+'是不安全的,因爲'(+)'是Oracle中的一個操作符(外部連接) – user113215