【问题标题】:Guaranteed order in SQL batch update?SQL批量更新中的保证顺序?
【发布时间】:2012-02-08 16:00:55
【问题描述】:

假设项目列表包含 item1、item2 和 item3。数据库是否也按此顺序插入我的项目?

List<Item> items = ...
List<Map<String, Object>> batchValues = new ArrayList<Map<String, Object>>();
for (Item item : items) {
    Map<String, Object> namedParameters = ...
    batchValues.add(namedParameters);
}
getNamedParameterJdbcTemplate().batchUpdate(SQL_INSERT_ITEMS, batchValues.toArray(new Map[0]));

【问题讨论】:

    标签: java sql spring jdbctemplate spring-jdbc


    【解决方案1】:

    当然可以,否则就一文不值了。

    顺便说一句,你应该改变这段代码:

    batchValues.toArray(new Map[0])
    

    batchValues.toArray(new Map[batchValues.size()])
    

    【讨论】:

    • 我的问题可能与实际插入数据库有关,然后是使用 Spring。我的物品会以与我的物品列表相同的顺序插入吗? ...不,我对 DB 了解不多。
    【解决方案2】:

    关系数据库不维护插入顺序。当您查询记录时,您可以使用order by 子句指定您希望它们的顺序。如果您需要按照插入方式对记录进行排序,则必须手动将数字存储到记录的字段中。某些数据库将具有表列的自动增量选项,或者您可以使用的序列生成器 (Oracle)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多