查询从 Java 层在 DB 中的 Saved Json 中插入新的 json 字符串

我们在 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"+"}"+") "


繁华开满天机
浏览 125回答 2
2回答

当年话下

无需字符串操作:如果该列被定义为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

您可以从包含 JSON 的数据库中获取当前必填字段,并通过 UPDATE 查询将其替换为新的 JSON并在 JSON 中添加新条目,您可以尝试这种方式 ->变量 obj = {};obj = { "1": "a", "2": "b" };obj["3"] = "c";
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java