spring 这两种查询方式是否等价?

ou6hu8tu  于 2023-02-03  发布在  Spring
关注(0)|答案(1)|浏览(132)

我是一个Spring后端学习者,目前想从MySQL查询一些数据。我想要的只是一个字段从表。(我想category中的categoryName)。
首先,我使用了LambdaQueryWrapper。我写了

categoryLambdaQueryWrapper.eq(Category::getId, categoryId);
Category category = categoryService.getOne(categoryLambdaQueryWrapper);

但分类值null偶尔。
然后,我改为在categoryService中简单地使用getById方法,一切都很好。

Category category = categoryService.getById(categoryId);

我很困惑,这两种查询方式有什么区别吗?我之前以为是等价的,谢谢大家的帮助。

h43kikqp

h43kikqp1#

不同之处在于categoryService.getOne(categoryLambdaQueryWrapper)返回与lambda查询 Package 器中指定的条件相匹配的单个实体,如果不存在这样的实体,则返回null。
另一方面,categoryService.getById(categoryId)直接在数据库中查询具有指定categoryId的实体,如果实体存在则返回实体,如果不存在则抛出异常。
因此,如果要在处理类别之前确保该类别存在,最好使用categoryService.getById(categoryId)

相关问题