I'm new to JOOQ and trying to get up to speed on an existing codebase (unfortunately the developer responsible for this particular code is no longer with us).
The insert code looks something like this (simplified) :
public class User {
public static Table<?> table = DSL.table("user");
public static Field<String> firstName = DSL.field(DSL.name(table.getName(), "first_name"), String.class);
public static Field<String> lastName = DSL.field(DSL.name(table.getName(), "last_name"), String.class);
}
private class UserDto {
private String firstName;
private String lastName;
// getters, setters, etc.
}
public class UserWriter {
private final DefaultDSLContext dslContext;
public UserWriter(DefaultDSLContext dslContext) {
this.dslContext = dslContext;
}
public void create(UserDto user) {
dslContext.insertInto(User.table, User.firstName, User.lastName)
.values(
DSL.param(User.firstName.getName(), user.getFirstName()),
DSL.param(User.lastName.getName(), user.getLastName()),
)
.execute();
}
}
Why use DSL.param() in values() when one can simply use the actual values ?
dslContext.insertInto(User.table, User.firstName, User.lastName)
.values(user.getFirstName(), user.getLastName())
.execute();
Is this just unnecessarily verbose or am I missing something?
Thanks!