如何使用 QueryDSL 在 "like" 值上加 1
How to add 1 on the "like" value using QueryDSL
在我的 postgres 数据库中,我有一个单元格来保存有多少人点击了 "i like" 对应的 post。但是,我想知道我当前的解决方案是否在 postgres 中是并发的。我现在所做的是我的 dao class.
中的两个步骤
1) 获取数据库中的当前值。
2) 加1,然后更新。
如果不是,我怎样才能使它并发?我正在使用 Java (querydsl) 和 Postgres。任何人都可以帮忙吗?
更新:
感谢您的回答。我没有说清楚的一件事是我使用 querydsl。所以我不使用普通的列方式。不过还是谢谢了。
我从未使用过 PostgreSQL,但我发现了一些东西。
UPDATE tableName
SET likes = likes + 1;
告诉我好不好,
很高兴能帮到你!
假设您的 table 被命名为 posts
并且您有一个 QPosts
查询 class,那么您可以:
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
在我的 postgres 数据库中,我有一个单元格来保存有多少人点击了 "i like" 对应的 post。但是,我想知道我当前的解决方案是否在 postgres 中是并发的。我现在所做的是我的 dao class.
中的两个步骤1) 获取数据库中的当前值。 2) 加1,然后更新。
如果不是,我怎样才能使它并发?我正在使用 Java (querydsl) 和 Postgres。任何人都可以帮忙吗?
更新:
感谢您的回答。我没有说清楚的一件事是我使用 querydsl。所以我不使用普通的列方式。不过还是谢谢了。
我从未使用过 PostgreSQL,但我发现了一些东西。
UPDATE tableName
SET likes = likes + 1;
告诉我好不好,
很高兴能帮到你!
假设您的 table 被命名为 posts
并且您有一个 QPosts
查询 class,那么您可以:
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