在for循环中附加参数(针对sql条件)

时间:2019-05-02 19:59:25

标签: java mysql

我从前同事那里接手了一个项目,在这个项目中,有一个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();
    }

0 个答案:

没有答案