Mar*_*iot 2 java postgresql jdbc parameterized jdbctemplate
我dblArrayFld在表中有一个双精度数组字段myTable,我想使用 Spring 更新它NamedParameterJdbcTemplate(我使用的是 Postgres)。
我正在运行这样的代码:
SqlParameterSource params = (new MapSqlParameterSource())
.addValue("myarray", myDblArrayListVar)
.addValue("myid", 123);
namedJdbcTemplate.update("UPDATE myTable SET dblArrayFld = :myarray WHERE idFld = :myid", params);
Run Code Online (Sandbox Code Playgroud)
这将返回一个错误,读取“$2”处或附近的语法错误
我假设我的 :myarray 语法在这里有问题。我还尝试:myarray通过以下方式封装:
dblArrayFld={:myarray}dblArrayFld={ :myarray }dblArrayFld=[:myarray]dblArrayFld=ARRAY[:myarray]dblArrayFld=(:myarray)这里的正确语法是什么?
当您尝试将集合或数组绑定为命名参数时,NamedParameterJdbcTemplate将语句中适当的命名参数分解为多个与数组/集合长度匹配的位置参数。这对WHERE column IN (:param)语句很有用,但在这种情况下不起作用。
为了设置实际的 Postgres 数组,您必须将参数提供为java.sql.Array. 您可以使用Connection#createArrayOf()方法创建其实例。
| 归档时间: |
|
| 查看次数: |
5550 次 |
| 最近记录: |