java - JDBC 模板 : either Update or Insert if ID doesn't exist

标签 java spring jdbctemplate

请看下面我用来更新表中字段的方法,
现在我有一个条件,如果 Id 存在于表中,则更新相关字段,否则在表中插入一条新记录。

  1. 如果id存在则更新

  2. 如果表中不存在id则插入一条新记录

有没有办法通过批量更新来满足这两个条件或任何其他方式,因为我必须总共处理数百行。

public void updateTable(List<TestClass> testList){

String UPDATE_ITEM_ARTICLENO = "UPDATE itemTable SET articleno=? WHERE itemId=?";

jdbcTemplate.batchUpdate(UPDATE_ITEM_ARTICLENO, new BatchPreparedStatementSetter() {         
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
        TestClass article = testList.get(i);            
        ps.setString(1, article.getItemId());
        ps.setString(2, article.getArticleno());            
    }        
    @Override
    public int getBatchSize() {
        return testList.size();
    }
  });
 }

最佳答案

有一个标准Merge (SQL)陈述。但并非所有 RDBMS 都支持它。其中一些有替代方案。

关于java - JDBC 模板 : either Update or Insert if ID doesn't exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21549805/

相关文章:

java - Spring jdbcTemplate OneToMany

mysql - 带 case + union + like 的 where 子句中的未知列

java - 倒数的 JUnit 测试

java - 使用 Postman 的 json 响应中的错误字符串

java - 使用 Hibernate 时未在多个事务中加载 Childs

spring - 从 OncePerRequestFilter 访问 spring bean

java - java中的抽象和数据隐藏

java - Spring Social XML 配置

java - Spring 集成 ip - 仅使用 java 代码的 udp channel

jdbctemplate - 将 sql.oracle.ARRAY SimpleJdbcCall 传递给 StoredProcedure