Java 如何在“1”上添加1;例如;使用QueryDSL的值

Java 如何在“1”上添加1;例如;使用QueryDSL的值,java,postgresql,querydsl,Java,Postgresql,Querydsl,在我的postgres db中,我有一个单元格来保存有多少人单击“我喜欢”对应的帖子。然而,我想知道我目前的解决方案是否与postgres并行。我现在做的是在我的dao类中执行两个步骤 1) 获取以DB为单位的当前值。 2) 添加1,然后更新它 如果没有,我如何使其并发?我正在使用Java(querydsl)和Postgres。有人能帮忙吗 更新: 谢谢你的回答。有一件事我没有弄清楚,那就是我使用了querydsl。所以我不使用普通列方式。不过还是要谢谢你。我从未做过PostgreSQL,但我发

在我的postgres db中,我有一个单元格来保存有多少人单击“我喜欢”对应的帖子。然而,我想知道我目前的解决方案是否与postgres并行。我现在做的是在我的dao类中执行两个步骤

1) 获取以DB为单位的当前值。 2) 添加1,然后更新它

如果没有,我如何使其并发?我正在使用Java(querydsl)和Postgres。有人能帮忙吗

更新:


谢谢你的回答。有一件事我没有弄清楚,那就是我使用了querydsl。所以我不使用普通列方式。不过还是要谢谢你。

我从未做过PostgreSQL,但我发现了一些东西

UPDATE tableName 
SET likes = likes + 1;
告诉我这是否好


如果我能帮助你,我会很高兴的

我从未做过PostgreSQL,但我发现了一些东西

UPDATE tableName 
SET likes = likes + 1;
告诉我这是否好


如果我能帮助你,我会很高兴的

假设您的表名为
posts
,并且您有一个
QPosts
查询类,那么您可以执行以下操作:

QPosts p = QPosts.posts;
queryFactory.
   update(q).
   set(q.likes, q.likes.add(1)). 
   where(q.id.eq(42));
这将生成以下SQL:

update posts
  set likes = likes + 1
where posts.id = 42

假设您的表名为
posts
,并且您有一个
QPosts
查询类,那么您可以执行以下操作:

QPosts p = QPosts.posts;
queryFactory.
   update(q).
   set(q.likes, q.likes.add(1)). 
   where(q.id.eq(42));
这将生成以下SQL:

update posts
  set likes = likes + 1
where posts.id = 42

类似于
直接在数据库中更新您的_表SET VALUE=VALUE+1
。注意:您可能需要知道谁“喜欢”(并防止多次喜欢)。因此,另一个解决方案是存储所有类似的内容(可能在非关系数据库中)。当用户喜欢时,在“喜欢”表中插入“喜欢”。当您需要知道“喜欢的计数”时,只需执行求和。类似于
直接在数据库中更新您的_表SET VALUE=VALUE+1
。注意:您可能需要知道谁“喜欢”(并防止多次喜欢)。因此,另一个解决方案是存储所有类似的内容(可能在非关系数据库中)。当用户喜欢时,在“喜欢”表中插入“喜欢”。当您需要知道“喜欢计数”时,只需执行求和。谢谢您的回复。这是querydsl sql的原子操作吗?或者我需要使该方法同步吗?嗯,
更新是原子的,所以您不需要麻烦同步Java方法。谢谢您的回复。这是querydsl sql的原子操作吗?或者我需要使方法同步吗?
UPDATE
是原子的,所以您不需要费心同步Java方法。