[英]NullPointerException on java Mapper with MyBatis
I'm getting the NullPointerException
and I can't figure out where are my mistakes. 我收到了
NullPointerException
,我不知道我的错误在哪里。
The error is in selectByExample
function. 错误在
selectByExample
函数中。 The code is: 代码是:
package com.service.test;
@Service
public class TestService {
[...]
@Autowired
private TestMapper TestMapper;
[...]
public List<Short> test(){
List<Short> lista = new ArrayList<Short>();
testExample me = new testExample();
me.or().andTestEqualTo(1);
List<test> listTest = TestMapper.selectByExample(me); //line 81
for(int i=0; i<listTest.size(); i++){
lista.add(listTest.get(i).getNuovoDb());
}
return lista;
}
Controller.java Controller.java
TestService ms = new TestService();
List<Short> listTest = ms.sediMigrate(); //line 46
The applicationContext is the follow: applicationContext是以下内容:
<!-- enable autowire -->
<context:annotation-config />
<context:component-scan base-package="com.service.test"/>
[...]
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.test.**"/>
<property name="sqlSessionFactoryBeanName" value="exSqlSessionFactory"/>
</bean>
Here there is the error: 这里有错误:
[11/07/14 11.19.33:848 CEST] 0000004f servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Generata eccezione non rilevata in uno dei metodi di servizio del servlet dispatcher nell'applicazione TestEAR.
[11/07/14 11.19.33:848 CEST] 0000004f servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper服务SRVE0068E:servozio del servlet调度程序nell'applicazione TestEAR中的Generata eccezione non rilevata。 Creata eccezione: org.springframework.web.util.NestedServletException: Request processing failed;
Creata eccezione:org.springframework.web.util.NestedServletException:请求处理失败; nested exception is java.lang.NullPointerException at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) at javax.servlet.http.HttpServlet.service(HttpServlet.java:738) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:939) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181) at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935) at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276) at com.ibm.ws.webcontainer.WebContainer.handle
嵌套的异常是org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)处的java.lang.NullPointerException org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)处的javax.servlet的org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)的.http.HttpServlet.service(HttpServlet.java:738)的javax.servlet.http.HttpServlet.service(HttpServlet.java:831)的。 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:939)上的com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)。 com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181)处的servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) com.ibm.ws.webcontainer.webapp.WebGroup.handle中的java:3935)com.ibm.ws.webcontainer.WebContainer.handle中的Request(WebGroup.java:276) Request(WebContainer.java:931) at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:2
com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)处的com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)处的Request(WebContainer.java:931) com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)上的.ibm.ws.http.channel.inbound.impl.HttpInboundLink.java:452 com上的.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) .ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)位于com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)位于com.ibm.io.async.AsyncChannelFuture com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)处com.ibm.io.async.ResultHandler.complete(ResultHandler.java:2)的.fireCompletionActions(AsyncChannelFuture.java:161) 04) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613) Caused by: java.lang.NullPointerException at com.service.test.TestService.test(TestService.java:81) at com.test.controller.ReturnPage(controller.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:600) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.han
04)在com.ibm.ws.util上的com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)在com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)处。 ThreadPool $ Worker.run(ThreadPool.java:1613)由以下原因引起:com.test.controller.ReturnPage(controller.java:com.service.test.TestService.test(TestService.java:81)处的java.lang.NullPointerException 46)at sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)at java.lang.reflect处sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod处的.Method.invoke(Method.java:600)在org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) (AnnotationMethodHandlerAdapter.java:446)在org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.han dle(AnnotationMethodHandlerAdapter.java:434) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) ... 25 more
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)的dle(AnnotationMethodHandlerAdapter.java:434)org.springframework的org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)的dle(AnnotationMethodHandlerAdapter.java:434) .web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)...还有25个
[11/07/14 11.19.33:856 CEST] 0000004f FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: Emesso evento FFDC in C:\\Program Files\\IBM\\WebSphere\\AppServer\\profiles\\AppSrv01\\logs\\ffdc\\server1_5e0b5e0b_14.07.11_11.19.33.8537970037945028520402.txt com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest() 309 [11/07/14 11.19.33:857 CEST] 0000004f webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Errore servlet]-[dispatcher]: java.lang.NullPointerException at com.service.test.TestService.test(TestService.java:81) at com.test.controller.ReturnPage(controller.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:600) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(Handler
[11/07/14 11.19.33:856 CEST] 0000004f FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider log事件FFDC1003I:C:\\ Program Files \\ IBM \\ WebSphere \\ AppServer \\ profiles \\ AppSrv01 \\中的Emesso甚至到FFDC logs \\ ffdc \\ server1_5e0b5e0b_14.07.11_11.19.33.8537970037945028520520.txt com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest()309 [11/07/14 11.19.33:857 CEST] 0000004f webapp E com.ibm。 ws.webcontainer.webapp.WebApp logServletError SRVE0293E:[错误servlet]-[调度程序]:com.test.controller.ReturnPage(com.service.test.TestService.test(TestService.java:81)处的java.lang.NullPointerException controller.java:46)at sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(Handler上的.lang.reflect.Method.invoke(Method.java:600) MethodInvoker.java:175) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) at javax.servlet.http.HttpServlet.service(HttpServlet.java:738) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657) at com.ibm.ws.webcontainer.servlet.ServletW
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)处的MethodInvoker.java:175)org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java: 434)在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)在org.springframework.web.servlet.FrameworkServlet org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)的java.servlet.http.HttpServlet.service(HttpServlet.java:738)的.processRequest(FrameworkServlet.java:961)。位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java)上的javax.servlet.http.HttpServlet.service(HttpServlet.java:831)上的web.servlet.FrameworkServlet.service(FrameworkServlet.java:837): 1657),网址为com.ibm.ws.webcontainer.servlet.ServletW rapper.handleRequest(ServletWrapper.java:939) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181) at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935) at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931) at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCa
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)的com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:的rapper.handleRequest(ServletWrapper.java:939): 181)位于com.ibm.ws.webcontainer.webapp.Webapp.WebApp.handleRequest(WebApp.java:3935)位于com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)位于com.ibm.ws com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)上的.webcontainer.WebContainer.handleRequest(WebContainer.java:931)在com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java :186),位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452),位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java :511)在com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)在com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCa llback.java:83) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)上com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)上的llback.java:83) .ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)位于com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)位于com.ibm.io.async.ResultHandler.complete(ResultHandler .java:204)com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)com.ibm.ws .util.ThreadPool $ Worker.run(ThreadPool.java:1613)
As you use Spring you should avoid explicitly creating your beans (using new
operator) - the framework should do it for you. 使用Spring时,应避免显式创建bean(使用
new
运算符)-框架应为您完成。 And the bean instance should be already in Spring context. 并且bean实例应该已经在Spring上下文中。 If you instantiate your service bean with
new
nothing will be autowired. 如果用
new
实例化服务Bean,则不会自动装配任何东西。 Thats why you will have null
instead of your mapper instance. 这就是为什么您将使用
null
而不是您的mapper实例的原因。
Please look info the Spring documentation about dependency injection and beans lifecycle in Spring applications http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-factory-collaborators 请查看有关Spring应用程序中的依赖项注入和bean生命周期的Spring文档http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-factory-collaborators
Update: 更新:
Autowiring TestService
into your controller may solve your issue. 将
TestService
自动TestService
到控制器中可能会解决您的问题。
@Controller
public class Controller {
@Autowired private TestService testService;
...
@RequestMapping
public String returnPage() {
...
testService.sediMigrate();
...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.