为了账号安全,请及时绑定邮箱和手机立即绑定

我好像发现mp的一个bug

lambdaQueryWrapper.eq(StringUtil.isNotEmpty(xxx),Dto::getXX,new BigDecimal(xxx));

我遇到的情况类似于这个

代码的场景是 我需要判断xxx是否是空字符串,如果是空字符串,不进行拼接sql,如果不是,转换为BigDecimal

但是如果我现在发现,当condition为false时,mp也会检查后面代码的合理性,这个好像有点不合理。


类似于下面的代码:


 lambdaQueryWrapper.eq(false,Dto::getXX,BigDecimal.ONE.divide(BigDecimal.ZERO));


当我第一个参数为false时,mp会检查1除以0的合理性

按理说,应该是类似于 

if(A && B){}

当A为false时,B都直接不会运行到才对。

正在回答

2 回答

这个我认为不是bug,你的说那个短路与实现的效果,那是基于java语法层面的,mp基于应用层面,实现不了你说的这种需求。lambdaQueryWrapper.eq(StringUtil.isNotEmpty(xxx),Dto::getXX,new BigDecimal(xxx));这个方法,会根据第一个条件是否为true来判断,这句是否加入到sql中,但不能做短路处理。

0 回复 有任何疑惑可以回复我~

收到,感谢~

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我好像发现mp的一个bug

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信