最近写项目用的baomidou的mybatisplus,感觉是真的挺好用的,功能也很强大,但是还是遇到了一个坑。
正常情况下用selectOne进行查询是:
Product prd = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
.eq(Product::getPrdId, prdId));
后面我为了查询速度能快一点,就加了一个select:
Product prd = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
.select(Product::getPrdName)
.eq(Product::getPrdId, prdId));
if(StringUtils.isBlank(prd.getPrdName())){
return;
}
这样写完之后测试,没有任何问题,一上生产环境报错了,空指针。。。
最后检查的结果是prd为空了,然后我又把生产环境的数据拿过来,再去测试,还是没问题!!!完全不知道咋回事,没办法,只能再加个判空了。
在使用baomidou的mybatisplus进行数据查询时,为提高效率添加了selectOne方法,但在生产环境中出现空指针异常。尽管在测试环境中未发现问题,但在分析prd数据后仍无法复现该错误。最终通过增加判空处理解决了这个问题。
936





