今天是学习mybatisplus的第二天,又是吸取群里大佬编程技术的一天,废话不多说,先来看一串代码
Card card=null;
LambdaQueryWrapper<Card> lambdaQueryWrapper=new LambdaQueryWrapper<>();
List<Card> cards = cardDao.selectList(lambdaQueryWrapper.eq(card!=null, Card::getId, card.getId()));
System.out.println(cards);
此时card对象为null,后面的代码会报错吗?(在IDEA里没有标红)
先思考思考再往下看。
我当时回答的不会报错,很显然我又回答错了!我当时想的condition判断的条件为false,后面的应该就不会去执行了吧,但是运行后,idea还是无情的给我返回了个空指针异常
好的现在来一行一行的解读这个代码
第一行创建了一个空的card对象,第二行构建条件对象,没有问题
第三行开始调用查询,把条件放进去,如果card!=null,这个结果肯定是false,所以这时候还会往下进行吗?估计有一半的人会认为既然已经判断为false了,后面肯定就不运行了呀,但是但是但是,他后面就是会运行!card.getId()也运行了,把card带进去null,可不就是null.getId()?,所以才会报错,就是这里的问题!!!
最后,奉劝大家把代码写规范,养成良好的写代码习惯。