Skip to content

Commit 489b164

Browse files
committed
Improve insert/update script
1 parent 182a761 commit 489b164

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/main/java/cz/foresttech/database/DatabaseEntityConvertor.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.lang.reflect.Field;
77
import java.sql.Timestamp;
8+
import java.util.ArrayList;
89
import java.util.Arrays;
910
import java.util.List;
1011
import java.util.UUID;
@@ -236,8 +237,8 @@ public String generateCreateScript(Class<?> clazz) {
236237
* @return a string representing a part of SQL script.
237238
*/
238239
private <T> String processFieldsForScript(Class<T> clazz, T object, boolean forDelete) throws IllegalAccessException {
239-
StringBuilder keys = new StringBuilder();
240-
StringBuilder values = new StringBuilder();
240+
List<String> keys = new ArrayList<>();
241+
List<String> values = new ArrayList<>();
241242

242243
for (Field field : clazz.getDeclaredFields()) {
243244
field.setAccessible(true);
@@ -253,15 +254,19 @@ private <T> String processFieldsForScript(Class<T> clazz, T object, boolean forD
253254
DatabaseValueProcessor valueProcessor = databaseAPI.getProcessor(field.getType());
254255

255256
String processedValue = processFieldValue(fieldValue, valueProcessor);
256-
keys.append(dbName).append(",");
257-
values.append(processedValue).append(",");
257+
keys.add(dbName);
258+
values.add(processedValue);
258259
}
259260

260-
// Remove trailing commas
261-
if (!keys.isEmpty()) keys.setLength(keys.length() - 1);
262-
if (!values.isEmpty()) values.setLength(values.length() - 1);
261+
if (keys.isEmpty()) return "";
262+
263+
StringBuilder builder = new StringBuilder();
264+
for (int i = 0; i < keys.size(); i++) {
265+
builder.append(keys.get(i)).append(" = ").append(values.get(i)).append(", ");
266+
}
263267

264-
return keys + " = " + values;
268+
builder.setLength(builder.length() - 2);
269+
return builder.toString();
265270
}
266271

267272
private <T> String getValuesFromField(Class<T> clazz, T object) throws IllegalAccessException {

0 commit comments

Comments
 (0)