gpt4 book ai didi

java - 如何检查 Java Spring 数据库查询成功/失败?

转载 作者:行者123 更新时间:2023-11-30 05:41:20 24 4
gpt4 key购买 nike

我有一些代码可以从我的 mongoDB 数据库中删除菜谱:

@RequestMapping(value = "/recipe/{id}", method = RequestMethod.DELETE)
public String deleteSingleRecipe(@PathVariable("id") String recipeId) {
try {
repository.deleteById(recipeId);
return "Deleted RECIPE success";
} catch (Exception ex) {
return ex.toString();
}
}

这可以根据ID成功删除菜谱。但是,我不确定如何捕获诸如配方不存在或删除失败之类的情况。

使用 JavaScript/Node 这真的很容易,因为我可以传递一个回调函数,根据结果/错误是否为空,我可以确定查询是否成功并继续。我完全不知道如何在 Java/Spring 中做到这一点。

当我第二次尝试删除菜谱时,我仍然得到“删除菜谱成功”。

最佳答案

如果您检查 JPARepository 接口(interface),您将得到

/**
* Deletes the entity with the given id.
*
* @param id must not be {@literal null}.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}
*/
void deleteById(ID id);

/**
* Deletes a given entity.
*
* @param entity
* @throws IllegalArgumentException in case the given entity is {@literal null}.
*/
void delete(T entity);

因此,根据您的要求,如果数据库中不存在给定的 id,它不会抛出任何异常。

为此,您可以使用 boolean isFound = repository.existsById(recipeId);如果 isFound是真的你可以删除它。如果 isFound为 false 那么你可以抛出异常。

第二种方法是你可以检查

  public class SimpleJpaRepository<T, ID> implements JpaRepository<T, ID>, JpaSpecificationExecutor<T>

此类包含 deleteById方法。如果id,此方法将抛出异常数据库中不存在。

/*
* (non-Javadoc)
* @see org.springframework.data.repository.CrudRepository#delete(java.io.Serializable)
*/
@Transactional
public void deleteById(ID id) {

Assert.notNull(id, ID_MUST_NOT_BE_NULL);

delete(findById(id).orElseThrow(() -> new EmptyResultDataAccessException(
String.format("No %s entity with id %s exists!", entityInformation.getJavaType(), id), 1)));
}

关于java - 如何检查 Java Spring 数据库查询成功/失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55567213/

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