我正在使用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是否提供了开箱即用的功能?
谢谢,杰伊
发布于 2012-05-24 05:49:04
您必须使用JdbcTemplate
请参阅:13.2.1.1 Examples of JdbcTemplate class usage
E.X:
this.jdbcTemplate.update(
"update t_actor set = ? where id = ?",
"Banjo", 5276L);发布于 2013-08-23 19:10:45
对于任何未来的读者-我想出了一个使用反射的方便函数;
适用于简单的pojos:
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");生成:
更新员工集合id = : id,name = :name,salary = :salary WHERE id= :id
发布于 2014-01-10 23:25:29
Spring JIRA中有一个关于缺少SimpleJdbcUpdate类的问题:https://jira.springsource.org/browse/SPR-4691。你可能想在那里给它加票。
https://stackoverflow.com/questions/10722882
复制相似问题