首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新的SimpleJdbcInsert等效项

更新的SimpleJdbcInsert等效项
EN

Stack Overflow用户
提问于 2012-05-23 23:14:11
回答 5查看 10.9K关注 0票数 5

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

代码语言:javascript
复制
final SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource).withTableName("abc");

insert.execute(new BeanPropertySqlParameterSource(abc));

这个类有没有用于进行更新的等价物?例如,假设我们处理的是一个单列主键,下面的内容将是一个方便的界面:

代码语言:javascript
复制
final SimpleJdbcUpdate update = new SimpleJdbcUpdate(dataSource).withTableName("abc").withIdColumn("abcId");

update.execute(new BeanPropertySqlParameterSource(abc));

Spring是否提供了开箱即用的功能?

谢谢,杰伊

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-24 05:49:04

您必须使用JdbcTemplate

请参阅:13.2.1.1 Examples of JdbcTemplate class usage

E.X:

代码语言:javascript
复制
this.jdbcTemplate.update(
    "update t_actor set = ? where id = ?", 
    "Banjo", 5276L);
票数 4
EN

Stack Overflow用户

发布于 2013-08-23 19:10:45

对于任何未来的读者-我想出了一个使用反射的方便函数;

适用于简单的pojos:

代码语言:javascript
复制
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));
    }

示例用法:

代码语言:javascript
复制
dao_update(database, "employee", my_employee, "id");

生成:

更新员工集合id = : id,name = :name,salary = :salary WHERE id= :id

票数 7
EN

Stack Overflow用户

发布于 2014-01-10 23:25:29

Spring JIRA中有一个关于缺少SimpleJdbcUpdate类的问题:https://jira.springsource.org/browse/SPR-4691。你可能想在那里给它加票。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10722882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档