Alf*_*oon 5 java sql jpql spring-data spring-data-jpa
假设我有下一个实体
@Entity
@Table(name = "account")
public class Account {
@Id
private long id;
private long amount;
}
Run Code Online (Sandbox Code Playgroud)
我想为现有帐户添加一些值并在数据库中更新它,或者如果该帐户不存在,我想创建一个新帐户。
Spring Data JPA 的基本方法是:
var account = dataJpaRepository.findById(id);
if (account==null) {account = new Account(id,someValue}
else {account.set(account.getAmount() + someValue);}
dataJpaRepository.save(account);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,完成了对数据库的两个请求,但使用本机查询,我只需发送一个请求即可完成,例如:
"INSERT INTO account (id, amount) VALUES (:id, someValue) ON DUPLICATE KEY UPDATE
amount = account.amount + someValue"
Run Code Online (Sandbox Code Playgroud)
是否可以通过 Spring Data JPA/JPQL 做同样的事情并减少请求量?
小智 -1
你可以这样做:
@Modifying
@Query("update account m set m.amount =m.amount + ?2 where m.id=?1")
void updateAcco(Long id, Long someValue);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5688 次 |
| 最近记录: |