我从前同事那里接手了一个项目,在这个项目中,有一个WHERE IN(SQL)条件是Java中的附加字符串。
但是我这里有一些效果问题。
在这种情况下,我得到了一个从DB查询的列表,这个list.size()
= 54104。
当我运行这段代码时,花了将近40秒,但这太长了,我不得不重写这部分代码。
一开始我不确定这段代码的哪一部分会使项目变慢,所以我在相同的时间标记vo.getId()
中运行了一些测试,例如以不变的方式更改aDTO vo = (aDTO) list.get(i);
。 >
最后,我很确定为什么如此缓慢的原因是这部分代码aDTO vo = (aDTO) list.get(i);
所以我该怎么做 ?有什么建议吗?
public static <T> String whereIn(List<T> list) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
System.out.println("開始組裝where條件,現在時間:" + sdf.format(new Date()));
StringBuilder sb = new StringBuilder();
if (list.isEmpty()) {
sb.append("''");
} else {
System.out.println("list.size:" + list.size() + ",現在時間:" + sdf.format(new Date()));
if (list.get(0) instanceof aDTO) {
for (int i = 0; i < list.size(); i++) {
aDTO vo = (aDTO) list.get(i);
if (i > 0)
sb.append(",");
sb.append("'" + vo.getId() + "'");
}
}
System.out.println("append完,現在時間:" + sdf.format(new Date()));
}
System.out.println("條件組裝完畢,現在時間:" + sdf.format(new Date()));
return sb.toString();
}