当前使用版本(必填,否则不予处理)
3.4.2 mybatis-plus-core-3.4.2.jar window10 jdk8 spring-boot-2.2.13.RELEASE.jar mysql5.6
该问题是如何引起的?(确定最新版也有问题再提!!!)
Lambda的between条件condition为false 不应执行后面的 value值计算 (最新版不确定,但是你们只管最新版也是不合理的个人认为。)
重现步骤(如果有就写完整)
我来给个示例吧:我们的理解between的condition不能执行后面的value值计算,实际上执行了报NPE了
期望:
boolean hasCreateDt = qry.getCreateDt() != null && qry.getCreateDt().size() == 2;
*.between(hasCreateDt, ProjectOrderRelationDO::getCreateDt,qry.getCreateDt().get(0),qry.getCreateDt().get(1))
实际:
boolean hasCreateDt = qry.getCreateDt()
*.between(hasCreateDt, ProjectOrderRelationDO::getCreateDt, hasCreateDt?qry.getCreateDt().get(0):null, hasCreateDt?qry.getCreateDt().get(1):null)
实际这个Issue(#4657) 已经写出来了,就是我们认为condition为false ,mp不该去执行后面的值计算,理应忽略这个Lambda式子。
Lambda的between条件构造失效 #4657 https://github.com/baomidou/mybatis-plus/issues/4657
报错信息
NPE
Comment From: miemieYaho
回炉重修java
Comment From: SSSDNSY
回炉重修java
本人确实能力浅薄,您既然回复了,请大佬给出具体做法,感谢。
Comment From: VampireAchao
https://gitee.com/baomidou/mybatis-plus/issues/I5GHIP#note_11545834_link
Comment From: lipengkun111
你调between方法的时候第三个参数是不是得算出来,才能进入到between内部。第三个参数计算得时候已经报错了,还没有进入between方法内部呢