网站规定,免费视频不提供代码。但是你可以参考其他同学自己敲,然后分享出来的代码看看,在留言区和评论去找找,有分享出链接的。
你这个错误的原因是存在这句stringObjectHashMap.put(
"email"
,
null
);,在
userQueryWrapper.allEq((k, v) -> !k.equals(
"name"
) && !v.equals(
25
), stringObjectHashMap);进行遍历的时候,当遍历到email时,v等于null,null调用equals报空指针异常。
!k.equals("remark") == false当然是不添加了。
我没遇到过你这种情况,方便把代码贴出来吗,我看看能不能分析出原因。
以前我也没用过lambdaQuery调用带过滤参数的allEq,不带过滤参数的那种挺优雅的。类似上面的需求,我做了一种折中实现方式,不太优雅。给你列出代码看看,有时间我再研究研究,如果有答案,我会答复你。
User user = new User();
user.setAge(25);
user.setRealName("王");
Map<SFunction<User, ?>, Object> params = new HashMap<>();
//防误写
params.put(User::getRealName, user.getRealName());
params.put(User::getAge, user.getAge());
List<User> userList = userMapper.selectList(Wrappers.<User>lambdaQuery().allEq(true,
(k, v) -> k.apply(user).equals(user.getRealName()), params, true));
请检查代码entity和dao层继承是否正确,注解是否正确。课程代码源码我已上传至码云,可以参考一下:Gitee源码地址:https://gitee.com/wsc_lord/imooc_mybatis-plus