[英]How can I use map.KeySet() in sql query in java
我有一個LinkedHahMap map1,它的鍵是我的beam_current ,它是雙精度類型,值是我的logtime,它是字符串類型。 現在,我想在我的SQL查詢中使用此map1.keySet()-
Set<Double> arr= map1.keySet();
String vs2="select b.beam_current, b.beam_energy where
b.logtime between '"+first+"' and '"+last+"' and b.beam_current in('"+arr+"')";
但是當我使用保存map1 key值的 arr時,**什么都沒有顯示。**我們不能在sql查詢中使用map1.KeySet()方法嗎?還是以錯誤的方式暗示了它?
首先將地圖鍵轉換為逗號分隔的字符串,然后在查詢中使用它。
List<Double> slist = new ArrayList<Double>(map1.keySet());
String s = StringUtils.join(slist, ',');
String vs2="select b.beam_current, b.beam_energy where
b.logtime between '"+first+"' and '"+last+"' and
b.beam_current in('"+s+"')";
如果您不想依賴外部庫(例如StringUtils.join),則可以手動執行:
public static void main(String[] args) {
HashMap<Double, String> map1 = new HashMap<Double, String>();
map1.put(1.5, "");
map1.put(2.5, "");
String first = "first";
String last = "last";
String query = buildQuery(map1, first, last);
System.out.println(query);
}
private static String buildQuery(HashMap<Double, String> map1, String first, String last) {
StringBuilder sb = new StringBuilder();
sb.append("select b.beam_current, b.beam_energy where b.logtime between '");
sb.append(first);
sb.append("' and '");
sb.append(last);
sb.append("' and b.beam_current in (");
String separator = "";
for (Double val : map1.keySet()) {
sb.append(separator);
sb.append(val);
separator = ", ";
}
sb.append(")");
return sb.toString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.