Skip to content

Commit 9b86e36

Browse files
committed
solved critical "Performance - Method concatenates strings using + in a loop"
1 parent 5c36da7 commit 9b86e36

File tree

2 files changed

+32
-21
lines changed

2 files changed

+32
-21
lines changed

src/main/java/net/sf/jsqlparser/statement/replace/Replace.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,32 +105,33 @@ public void setUseValues(boolean useValues) {
105105

106106
@Override
107107
public String toString() {
108-
String sql = "REPLACE " + table;
108+
StringBuilder sql = new StringBuilder();
109+
sql.append("REPLACE ").append(table);
109110

110111
if (expressions != null && columns != null) {
111112
// the SET col1=exp1, col2=exp2 case
112-
sql += " SET ";
113+
sql.append(" SET ");
113114
// each element from expressions match up with a column from columns.
114115
for (int i = 0, s = columns.size(); i < s; i++) {
115-
sql += "" + columns.get(i) + "=" + expressions.get(i);
116-
sql += (i < s - 1) ? ", " : "";
116+
sql.append(columns.get(i)).append("=").append(expressions.get(i));
117+
sql.append((i < s - 1) ? ", " : "");
117118
}
118119
} else if (columns != null) {
119120
// the REPLACE mytab (col1, col2) [...] case
120-
sql += " " + PlainSelect.getStringList(columns, true, true);
121+
sql.append(" ").append(PlainSelect.getStringList(columns, true, true));
121122
}
122123

123124
if (itemsList != null) {
124125
// REPLACE mytab SELECT * FROM mytab2
125126
// or VALUES ('as', ?, 565)
126127

127128
if (useValues) {
128-
sql += " VALUES";
129+
sql.append(" VALUES");
129130
}
130131

131-
sql += " " + itemsList;
132+
sql.append(" ").append(itemsList);
132133
}
133134

134-
return sql;
135+
return sql.toString();
135136
}
136137
}

src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -161,31 +161,41 @@ public void setGroupByColumnReferences(List<Expression> list) {
161161

162162
@Override
163163
public String toString() {
164-
String sql = "SELECT ";
165-
sql += ((distinct != null) ? "" + distinct + " " : "");
166-
sql += ((top != null) ? "" + top + " " : "");
167-
sql += getStringList(selectItems);
164+
StringBuilder sql = new StringBuilder("SELECT ");
165+
if (distinct != null) {
166+
sql.append(distinct).append(" ");
167+
}
168+
if (top != null) {
169+
sql.append(top).append(" ");
170+
}
171+
sql.append(getStringList(selectItems));
168172
if (fromItem != null) {
169-
sql += " FROM " + fromItem;
173+
sql.append(" FROM ").append(fromItem);
170174
if (joins != null) {
171175
Iterator<Join> it = joins.iterator();
172176
while (it.hasNext()) {
173177
Join join = it.next();
174178
if (join.isSimple()) {
175-
sql += ", " + join;
179+
sql.append(", ").append(join);
176180
} else {
177-
sql += " " + join;
181+
sql.append(" ").append(join);
178182
}
179183
}
180184
}
181185
// sql += getFormatedList(joins, "", false, false);
182-
sql += ((where != null) ? " WHERE " + where : "");
183-
sql += getFormatedList(groupByColumnReferences, "GROUP BY");
184-
sql += ((having != null) ? " HAVING " + having : "");
185-
sql += orderByToString(orderByElements);
186-
sql += ((limit != null) ? limit + "" : "");
186+
if (where != null) {
187+
sql.append(" WHERE ").append(where);
188+
}
189+
sql.append(getFormatedList(groupByColumnReferences, "GROUP BY"));
190+
if (having != null) {
191+
sql.append(" HAVING ").append(having);
192+
}
193+
sql.append(orderByToString(orderByElements));
194+
if (limit != null) {
195+
sql.append(limit);
196+
}
187197
}
188-
return sql;
198+
return sql.toString();
189199
}
190200

191201
public static String orderByToString(List<OrderByElement> orderByElements) {

0 commit comments

Comments
 (0)