【发布时间】:2022-01-09 09:52:09
【问题描述】:
我是 JOOQ 的新手,正在努力加快现有代码库的速度(不幸的是,负责此特定代码的开发人员已不在我们身边)。
插入代码看起来像这样(简化):
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();
}
}
既然可以简单地使用实际值,为什么还要在 values() 中使用 DSL.param() ?
dslContext.insertInto(User.table, User.firstName, User.lastName)
.values(user.getFirstName(), user.getLastName())
.execute();
这只是不必要的冗长还是我遗漏了什么?
谢谢!
【问题讨论】:
标签: java postgresql jooq