Java HTTP使用部分Json更新数据库-Spring,Postgres
我正在使用Spring和Postgres编写一个web apiJava HTTP使用部分Json更新数据库-Spring,Postgres,java,json,spring,postgresql,Java,Json,Spring,Postgresql,我正在使用Spring和Postgres编写一个web api 我有一个例子,我使用Json对象item uri是/api/item/{itemId} 请求类型为PUT Json: { "name":"itemname", "description":"item description here" } 因此,我(使用JdbcTemplate)执行一个SELECT语句来检查itemId是否存在,如果存在则进行更新 我还想实现一个使用Json的部分puts的案例,如下所示: {
- 我有一个例子,我使用Json对象
item
- uri是
/api/item/{itemId}
- 请求类型为
PUT
{
"name":"itemname",
"description":"item description here"
}
因此,我(使用JdbcTemplate)执行一个SELECT
语句来检查itemId
是否存在,如果存在则进行更新
我还想实现一个使用Json的部分puts的案例,如下所示:
{
"name":"itemname"
}
或
其中仅更新相应的字段。在Spring中,不存在的变量将自动null
目前的实施方式是:
从项目
表中选择所有列
UPDATE
包含值的所有列(如果表具有notnull
约束,则所有列都不应为null
)==null或!=空
检查?Is似乎是糟糕的设计,涉及到对每个PUT
请求的每个预期变量进行迭代(我将有很多这样的请求)
期望的响应(按照期望的顺序):
null
值,列值就不会写入数据库(并且不会产生错误)使用数据库时有两种选择:
表单的内容。获取html表单中的每个字段,并使用SQL语句仅更新数据库中的这些字段。表单中未包含的任何内容都不会在数据库表中更新。简单!效果很好。你不必担心表格中没有的东西。您可以限制对表单内容的更新
一般来说,这是一个简单的选项,除了一个问题,即html复选框。如果您正在进行更新,html复选框可能会让您感到困惑,因为由于一点设计缺陷,如果未选中它们,它们不会被发送回服务器
第二:也许你在找Hibernate,你没有提到。Jackson将为您填充一个json对象(必须有记录id)。使用Hibernate使用现有记录填充java类,使用Jackson提供的新值进行更新,然后告诉Hibernate()将其合并到数据库中的现有记录中,它将这样做。我还使用Roo为自己创建Hibernate就绪类
第2项很难学习和设置,但一旦使用了它,就很容易更改内容、添加字段等。在Postgres中创建表时,您可能会发现默认属性很有用。例如,您可能有这样一个字段定义:numberofpeople默认值为0。如果您的所有字段都有默认值,那么您不必担心您的“人数”字段是否不在要插入数据库的字段中。Postgres只需将字段设置为默认值。是否将默认值设置为当前值,以便传入null时保留默认值?您的意思是,如果发送null,是否有方法将字段保持为当前值?不,据我所知没有。然而,当我提到默认关键字时,我们指的是新的记录插入,当然不是更新。我没有做任何插入。只有更新。
{
"description":"item description here"
}