【发布时间】:2021-04-24 17:57:09
【问题描述】:
我们正在开发一个应用程序,我们将在运行时生成表单。现在我们需要对动态表单的数据进行CRUD操作。
我们想通过写入将记录保存到表中
Map<String, String> map = new TreeMap<>();
map.put("name","User Name");
map.put("dob", "30-3-1995");
map.put("address", "Address Line");
map.put("city", "Jaipur");
/* insert into user table */
db.insert("user",map); // SAME AS JPA
Does java spring boot provides query builder like php CodeIgniter query builder
我正在尝试使用 JOOQ 来实现相同的目标。
@Override
public void testingJooq(){
Field<String> username = field("username", String.class, "harigyan2");
// How bindings bind the value to the Field?
Field<String> password = field("password", String.class, "abcd");
Field<String> email = field("email", String.class, "hg2@server.com");
Field<Boolean> enabled = field("enabled", Boolean.TYPE, true);
// list of columns to insert
List<? extends Field<? extends Serializable>> columns = Arrays.asList(username, password, email, enabled);
// list of corresponding values as columns
List<? extends Field<? extends Serializable>> values = Arrays.asList(field("harigyan2", String.class), field("pwdhere", String.class), field("harigyan@server.com", String.class), field("1", Boolean.TYPE));
this.create.insertInto(table("user"), columns)
.values(values).getSQL();
}
上述代码的问题在于:
- 两个列表的列和值应该是相同的顺序并且
- 值中的数据类型应与代码中的表列数据类型匹配
注意:我们不能将 JOOQ 用于代码生成,因为所有表单都是动态的,并且没有任何对应的 Java 类(实体类)。
Map<String, Object> map = new TreeMap<>();
map.put("name","User Name");
map.put("dob", "30-3-1995");
map.put("address", "Address Line");
map.put("city", "Jaipur");
/* insert into user table */
this.create.insertInto(table('user')).values(map).execute();
如果上面的 JOOQ 插入语句从 map
我们在一个项目中使用 php CodeIgniter 来构建 sql 查询 Php CodeIgniter Query Builder 所以我们也在尝试在 java 中找到类似的东西。
【问题讨论】: