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都直接不会运行到才对。
这个我认为不是bug,你的说那个短路与实现的效果,那是基于java语法层面的,mp基于应用层面,实现不了你说的这种需求。lambdaQueryWrapper.eq(StringUtil.isNotEmpty(xxx),Dto::getXX,
new
BigDecimal(xxx));这个方法,会根据第一个条件是否为true来判断,这句是否加入到sql中,但不能做短路处理。
收到,感谢~