allEq(BiPredicate<R, V> filter, Map<R, V> params)報(bào)空指針異常,版本有變動(dòng)?
我用的是3.3.1版本的mybatis-plus,寫了相同思路的代碼,報(bào)空指針異常:
@Test public?void?selectByWrapperAllEq4()?{ ????QueryWrapper<User>?userQueryWrapper?=?new?QueryWrapper<>(); ????HashMap<String,?Object>?stringObjectHashMap?=?new?HashMap<>(); ????stringObjectHashMap.put("name",?"王天風(fēng)"); ????stringObjectHashMap.put("age",?25); ????stringObjectHashMap.put("email",?null); ????userQueryWrapper.allEq((k,?v)?->?!k.equals("name")?&&?!v.equals(25),?stringObjectHashMap); ????List<User>?userList?=?userMapper.selectList(userQueryWrapper); ????userList.forEach(System.out::println); }
報(bào)錯(cuò)為:
java.lang.NullPointerException ????at?com.example.curd.CurdApplicationTests.lambda$selectByWrapperAllEq4$4(CurdApplicationTests.java:401) ????at?com.baomidou.mybatisplus.core.conditions.AbstractWrapper.lambda$allEq$1(AbstractWrapper.java:125) ????at?java.util.HashMap.forEach(HashMap.java:1289) ????at?com.baomidou.mybatisplus.core.conditions.AbstractWrapper.allEq(AbstractWrapper.java:124) ????at?com.baomidou.mybatisplus.core.conditions.AbstractWrapper.allEq(AbstractWrapper.java:48) ????at?com.baomidou.mybatisplus.core.conditions.interfaces.Compare.allEq(Compare.java:66) ????at?com.baomidou.mybatisplus.core.conditions.interfaces.Compare.allEq(Compare.java:59) ????at?com.example.curd.CurdApplicationTests.selectByWrapperAllEq4(CurdApplicationTests.java:401) ????at?sun.reflect.NativeMethodAccessorImpl.invoke0(Native?Method) ????at?sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ????at?sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ????at?java.lang.reflect.Method.invoke(Method.java:498) ????at?org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675) ????at?org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) ????at?org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:125) ????at?org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:132) ????at?org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:124) ????at?org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:74) ????at?org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) ????at?org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) ????at?org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:104) ????at?org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:62) ????at?org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43) ????at?org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35) ????at?org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) ????at?org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) ????at?org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202) ????at?org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ????at?org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198) ????at?org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) ????at?org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135) ????at?org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ????at?org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ????at?org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ????at?java.util.ArrayList.forEach(ArrayList.java:1257) ????at?org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ????at?org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ????at?org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ????at?org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ????at?java.util.ArrayList.forEach(ArrayList.java:1257) ????at?org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ????at?org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ????at?org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ????at?org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ????at?org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ????at?org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) ????at?org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ????at?org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) ????at?org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229) ????at?org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197) ????at?org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211) ????at?org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191) ????at?org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128) ????at?com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69) ????at?com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) ????at?com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230) ????at?com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
2020-03-17
? ? ? ? 你這個(gè)錯(cuò)誤的原因是存在這句
stringObjectHashMap.put(
"email"
,?
null
);,在
userQueryWrapper.allEq((k,?v)?->?!k.equals(
"name"
)?&&?!v.equals(
25
),?stringObjectHashMap);進(jìn)行遍歷的時(shí)候,當(dāng)遍歷到email時(shí),v等于null,null調(diào)用equals報(bào)空指針異常。
2020-05-12
(k,?v)?->?!k.equals(
"name"
)?&&?!v.equals(
25
)這段代碼表示在遍歷Map的時(shí)候,分別對(duì)key和Value進(jìn)行判斷,由于Value是null,null調(diào)用方法就會(huì)報(bào)空指針異常