我是一个Spring后端学习者,目前想从MySQL查询一些数据。我想要的只是一个字段从表。(我想category
中的categoryName
)。
首先,我使用了LambdaQueryWrapper。我写了
categoryLambdaQueryWrapper.eq(Category::getId, categoryId);
Category category = categoryService.getOne(categoryLambdaQueryWrapper);
但分类值null
偶尔。
然后,我改为在categoryService中简单地使用getById方法,一切都很好。
Category category = categoryService.getById(categoryId);
我很困惑,这两种查询方式有什么区别吗?我之前以为是等价的,谢谢大家的帮助。
1条答案
按热度按时间h43kikqp1#
不同之处在于
categoryService.getOne(categoryLambdaQueryWrapper)
返回与lambda查询 Package 器中指定的条件相匹配的单个实体,如果不存在这样的实体,则返回null。另一方面,
categoryService.getById(categoryId)
直接在数据库中查询具有指定categoryId的实体,如果实体存在则返回实体,如果不存在则抛出异常。因此,如果要在处理类别之前确保该类别存在,最好使用
categoryService.getById(categoryId)
。