我们在 DB 中有一列以字符串格式保存 JSON 值,例如:{"listOfPlaces" : [1,2,3], "segment" : 1}现在,我们需要从带有 UPDATE Query 的 JAVA 层更新 JSON。例如:我们需要添加 activityId : 1这里保存在 DB 的 JSON 中。这样我们就可以将 JSON 存储为:{"listOfPlaces" : [1,2,3], "segment" : 1, activityId : 1}我尝试使用下面提到的代码,但不确定它是否准确。MapSqlParameterSource parameters = new MapSqlParameterSource();parameters.addValue(newFieldName, newFilterCriteriaForAddition.getName());parameters.addValue(newFieldValue, newFilterCriteriaForAddition.getDefaultValue());int update = namedParameterJdbcTemplate.update(Constant.SQL_TO_ADD_FILTER_CRITERIA_IN_SAVED_REPORT, parameters);和查询是:"UPDATE adv.sav_table SET filter_crtr = LEFT(rpt_filter_crtra, -1) + "||CONCAT("+ ",\""+ ":newFieldName:"+":"+newFieldValue"+"}"+") "
2 回答
当年话下
TA贡献1890条经验 获得超9个赞
无需字符串操作:
如果该列被定义为jsonb(它应该是),您可以简单地连接新值:
update adv.sav_table
SET filter_crtr = filter_crtr || '{"activityId":1}'
where ...;
这可以通过 PreparedStatement 来完成:
update adv.sav_table
SET filter_crtr = filter_crtr || cast(? as jsonb)
where ...;
然后使用
PreparedStatement pstmt = connection.prepareStatement("UPDATE ...");
psmt.setString(1, "{\"activityId\":1}");
慕无忌1623718
TA贡献1744条经验 获得超4个赞
您可以从包含 JSON 的数据库中获取当前必填字段,并通过 UPDATE 查询将其替换为新的 JSON
并在 JSON 中添加新条目,您可以尝试这种方式 ->
变量 obj = {};
obj = { "1": "a", "2": "b" };
obj["3"] = "c";
添加回答
举报
0/150
提交
取消