gpt4 book ai didi

java - 查询从 Java 层在数据库中的保存的 Json 中插入新的 json 字符串

转载 作者:行者123 更新时间:2023-11-29 13:40:35 25 4
gpt4 key购买 nike

我们在数据库中有一列以 String 的格式保存了 JSON 值,例如:

{"listOfPlaces" : [1,2,3], "segment" : 1}

现在,我们需要使用更新查询从 JAVA 层更新 JSON。例如:我们需要添加

 activityId : 1

此处为数据库保存的 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"+"}"+") "

最佳答案

不需要字符串操作:

如果该列被定义为 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}");

关于java - 查询从 Java 层在数据库中的保存的 Json 中插入新的 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55932671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com