gpt4 book ai didi

spring - SimpleJdbcInsert 等价于更新

转载 作者:行者123 更新时间:2023-12-04 21:53:32 30 4
gpt4 key购买 nike

我正在使用 Spring 的 SimpleJdbcInsert 类来创建实体 - 例如:

final SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource).withTableName("abc");

insert.execute(new BeanPropertySqlParameterSource(abc));

是否有一些等效的此类用于进行更新?例如,假设我们正在处理单列主键,如下所示将是一个方便的界面:
final SimpleJdbcUpdate update = new SimpleJdbcUpdate(dataSource).withTableName("abc").withIdColumn("abcId");

update.execute(new BeanPropertySqlParameterSource(abc));

Spring 是否在某处提供了这种开箱即用的功能?

谢谢

最佳答案

对于任何 future 的读者 - 我想出了一个使用反射的便利功能;

适用于简单的 pojo:

public void dao_update(NamedParameterJdbcTemplate database, String table, Object pojo, String[] keys) {

StringBuilder sqlBuilder = new StringBuilder("UPDATE ");
sqlBuilder.append(table);
sqlBuilder.append(" SET ");
boolean first = true;
for (Field field : pojo.getClass().getDeclaredFields()) {
if (!first) {
sqlBuilder.append(",");
}
first = false;
sqlBuilder.append(field.getName());
sqlBuilder.append(" = :");
sqlBuilder.append(field.getName());
}


first = true;
for (String key : keys) {
if (first) {
sqlBuilder.append(" WHERE ");
} else {
sqlBuilder.append(" AND ");
}
first = false;
sqlBuilder.append(key);
sqlBuilder.append("= :");
sqlBuilder.append(key);
}
database.getJdbcOperations().update(sqlBuilder.toString(), new BeanPropertySqlParameterSource(pojo));
}

用法示例:
dao_update(database, "employee", my_employee, "id");

产生:

更新员工 SET id = :id, name = :name,salary = :salary WHERE id = :id

关于spring - SimpleJdbcInsert 等价于更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10722882/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com