我得到了NullPointerException
,我不知道我的错误在哪里。
错误出现在selectByExample
函数中。代码是:
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;
}
控制器。JAVA
TestService ms = new TestService();
List<Short> listTest = ms.sediMigrate(); //line 46
应用上下文如下:
<!-- 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>
这里有一个错误:
[11/07/14 11.19.33:848 CEST]000000 4F servlet电子商务。国际商用机器公司ws。网络容器。servlet。ServletWrapper服务SRVE0068E:在uno dei metodi di servlet dispatcher nell'Applicatione TestEAR中生成eccezione non-rilevata。创建一个eccezione:org。springframework。网状物util。NestedServletException:请求处理失败;嵌套的异常是java。org上的lang.NullPointerException。springframework。网状物servlet。FrameworkServlet。org上的processRequest(FrameworkServlet.java:973)。springframework。网状物servlet。FrameworkServlet。javax上的doPost(FrameworkServlet.java:863)。servlet。http。HttpServlet。服务(HttpServlet.java:738)位于org。springframework。网状物servlet。FrameworkServlet。javax上的服务(FrameworkServlet.java:837)。servlet。http。HttpServlet。com上的服务(HttpServlet.java:831)。国际商用机器公司ws。网络容器。servlet。ServletWrapper。com上的服务(ServletWrapper.java:1657)。国际商用机器公司ws。网络容器。servlet。ServletWrapper。handleRequest(ServletWrapper.java:939)位于com。国际商用机器公司ws。网络容器。servlet。ServletWrapper。handleRequest(ServletWrapper.java:502)位于com。国际商用机器公司ws。网络容器。servlet。ServletWrapperImpl。handleRequest(ServletWrapperImpl.java:181)位于com。国际商用机器公司ws。网络容器。网络应用。网络应用。HandlerRequest(WebApp.java:3935)位于com。国际商用机器公司ws。网络容器。网络应用。网络组。HandlerRequest(WebGroup.java:276)位于com。国际商用机器公司ws。网络容器。网络容器。HandlerRequest(WebContainer.java:931)位于com。国际商用机器公司ws。网络容器。WSWebContainer。handleRequest(WSWebContainer.java:1592)位于com。国际商用机器公司ws。网络容器。频道WCChannelLink。com上的ready(WCChannelLink.java:186)。国际商用机器公司ws。http。频道入境。impl。HttpInboundLink。在com上处理歧视(HttpInboundLink.java:452)。国际商用机器公司ws。http。频道入境。impl。HttpInboundLink。handleNewRequest(HttpInboundLink.java:511)位于com。国际商用机器公司ws。http。频道入境。impl。HttpInboundLink。com上的processRequest(HttpInboundLink.java:305)。国际商用机器公司ws。http。频道入境。impl。HttpICLReadCallback。在com上完成(HttpICLReadCallback.java:83)。国际商用机器公司ws。tcp。频道impl。AioReadCompletionListener。FutureCompletionListener(AioReadCompletionListener.java:165)在com上完成。国际商用机器公司木卫一。异步的。抽象的未来。com上的invokeCallback(AbstractAsyncFuture.java:217)。国际商用机器公司木卫一。异步的。未来。com上的fireCompletionActions(AsyncChannelFuture.java:161)。国际商用机器公司木卫一。异步的。未来。已在com上完成(AsyncFuture.java:138)。国际商用机器公司木卫一。异步的。结果德勒。在com上完成(resultandler.java:204)。国际商用机器公司木卫一。异步的。结果德勒。在com上运行EventProcessingLoop(ResultHandler.java:775)。国际商用机器公司木卫一。异步的。ResultHandler 2美元。在com上运行(resultandler.java:905)。国际商用机器公司ws。util。线程池$Worker。运行(ThreadPool.java:1613)的原因是:java。com上的lang.NullPointerException。服务测验测试服务。在com上测试(TestService.java:81)。测验控制器。sun上的ReturnPage(controller.java:46)。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:48)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:25)。朗。反思。方法在org调用(Method.java:600)。springframework。网状物绑定注释。支持HandlerMethodInvoker。org上的invokeHandlerMethod(HandlerMethodInvoker.java:175)。springframework。网状物servlet。mvc。注释。注释方法HandlerAdapter。org上的invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)。springframework。网状物servlet。mvc。注释。注释方法HandlerAdapter。handle(AnnotationMethodHandlerAdapter.java:434)位于org。springframework。网状物servlet。调度员服务。doDispatch(DispatcherServlet.java:938)位于org。springframework。网状物servlet。调度员服务。doService(DispatcherServlet.java:870)位于org。springframework。网状物servlet。FrameworkServlet。processRequest(FrameworkServlet.java:961)。。。25多
[11/07/14 11.19.33:856 CEST]000000 4F FFDCW公司。国际商用机器公司ws。ffdc。impl。FfdcProvider logIncident FFDC1003I:C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\FFDC\server1_5e0b5e0b_14.07.11_11.19.33.8537970037945028520402中的Emesso evento FFDC。txt com。国际商用机器公司ws。网络容器。servlet。ServletWrapper。handleRequest()309[11/07/1411.19.33:857 CEST]0000004f网络应用电子商务。国际商用机器公司ws。网络容器。网络应用。WebApp logServletError SRVE0293E:[错误servlet]-[调度程序]:java。com上的lang.NullPointerException。服务测验测试服务。在com上测试(TestService.java:81)。测验控制器。sun上的ReturnPage(controller.java:46)。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:48)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:25)。朗。反思。方法在org调用(Method.java:600)。springframework。网状物绑定注释。支持HandlerMethodInvoker。org上的invokeHandlerMethod(HandlerMethodInvoker.java:175)。springframework。网状物servlet。mvc。注释。注释方法HandlerAdapter。org上的invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)。springframework。网状物servlet。mvc。注释。注释方法HandlerAdapter。handle(AnnotationMethodHandlerAdapter.java:434)位于org。springframework。网状物servlet。调度员服务。doDispatch(DispatcherServlet.java:938)位于org。springframework。网状物servlet。调度员服务。doService(DispatcherServlet.java:870)位于org。springframework。网状物servlet。FrameworkServlet。org上的processRequest(FrameworkServlet.java:961)。springframework。网状物servlet。FrameworkServlet。javax上的doPost(FrameworkServlet.java:863)。servlet。http。HttpServlet。服务(HttpServlet.java:738)位于org。springframework。网状物servlet。FrameworkServlet。javax上的服务(FrameworkServlet.java:837)。servlet。http。HttpServlet。com上的服务(HttpServlet.java:831)。国际商用机器公司ws。网络容器。servlet。ServletWrapper。com上的服务(ServletWrapper.java:1657)。国际商用机器公司ws。网络容器。servlet。ServletWrapper。handleRequest(ServletWrapper.java:939)位于com。国际商用机器公司ws。网络容器。servlet。ServletWrapper。handleRequest(ServletWrapper.java:502)位于com。国际商用机器公司ws。网络容器。servlet。ServletWrapperImpl。handleRequest(ServletWrapperImpl.java:181)位于com。国际商用机器公司ws。网络容器。网络应用。网络应用。HandlerRequest(WebApp.java:3935)位于com。国际商用机器公司ws。网络容器。网络应用。网络组。HandlerRequest(WebGroup.java:276)位于com。国际商用机器公司ws。网络容器。网络容器。HandlerRequest(WebContainer.java:931)位于com。国际商用机器公司ws。网络容器。WSWebContainer。handleRequest(WSWebContainer.java:1592)位于com。国际商用机器公司ws。网络容器。频道WCChannelLink。com上的ready(WCChannelLink.java:186)。国际商用机器公司ws。http。频道入境。impl。HttpInboundLink。在com上处理歧视(HttpInboundLink.java:452)。国际商用机器公司ws。http。频道入境。impl。HttpInboundLink。handleNewRequest(HttpInboundLink.java:511)位于com。国际商用机器公司ws。http。频道入境。impl。HttpInboundLink。com上的processRequest(HttpInboundLink.java:305)。国际商用机器公司ws。http。频道入境。impl。HttpICLReadCallback。在com上完成(HttpICLReadCallback.java:83)。国际商用机器公司ws。tcp。频道impl。AioReadCompletionListener。FutureCompletionListener(AioReadCompletionListener.java:165)在com上完成。国际商用机器公司木卫一。异步的。抽象的未来。com上的invokeCallback(AbstractAsyncFuture.java:217)。国际商用机器公司木卫一。异步的。未来。com上的fireCompletionActions(AsyncChannelFuture.java:161)。国际商用机器公司木卫一。异步的。未来。已在com上完成(AsyncFuture.java:138)。国际商用机器公司木卫一。异步的。结果德勒。在com上完成(resultandler.java:204)。国际商用机器公司木卫一。异步的。结果德勒。在com上运行EventProcessingLoop(ResultHandler.java:775)。国际商用机器公司木卫一。异步的。ResultHandler 2美元。在com上运行(resultandler.java:905)。国际商用机器公司ws。util。线程池$Worker。运行(ThreadPool.java:1613)
当您使用Spring时,您应该避免显式创建您的bean(使用new
运算符)-框架应该为您这样做。bean实例应该已经在Spring上下文中。如果使用new
实例化服务bean,则不会自动生成任何内容。这就是为什么您将使用null
而不是mapper实例。
请查看有关Spring应用程序中依赖项注入和bean生命周期的Spring文档http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-工厂合作者
更新:
将TestService
自动连接到控制器中可能会解决您的问题。
@Controller
public class Controller {
@Autowired private TestService testService;
...
@RequestMapping
public String returnPage() {
...
testService.sediMigrate();
...
}
}
我使用Java.time.LocalDate(Java8)来表示Java类中的一些成员字段。 我也在使用mybatis,与我的数据库交互。 这是因为mybatis目前没有“timestamp”(SQL Server)到java.time的映射吗? 我应该如何使用java.time.LocalDate来映射MyBatis?
主要内容:XML实现映射器,注解实现映射器,MyBatis 映射器的主要元素映射器是 MyBatis 中最重要的文件,文件中包含一组 SQL 语句(例如查询、添加、删除、修改),这些语句称为映射语句或映射 SQL 语句。 映射器由 Java 接口和 XML 文件(或注解)共同组成,它的作用如下。 定义参数类型 配置缓存 提供 SQL 语句和动态 SQL 定义查询结果和 POJO 的映射关系 映射器有以下两种实现方式。 通过 XML 文件方式实现,比如我们在 mybatis
问题内容: 我正在使用java.time.LocalDate(Java 8)表示Java类中的某些成员字段。 我还使用mybatis与我的数据库进行交互。 从数据库检索某些数据时,所有其他字段都将正确填充,但startDate和endDate字段最终将为null。 但是,如果我使用java.util.Date,例如 当我将它们声明为java.util.Date时,可以在这两个字段(startDat
本文向大家介绍MyBatis 引入映射器的方法,包括了MyBatis 引入映射器的方法的使用技巧和注意事项,需要的朋友参考一下 mybatis引入映射器分为三种方式 1. 文件路径引入映射器 用包名引入映射器 用类注册引入映射器 用userMapper引入映射器 总结 以上所述是小编给大家介绍的MyBatis 引入映射器的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的
本文向大家介绍Java的MyBatis框架中XML映射缓存的使用教程,包括了Java的MyBatis框架中XML映射缓存的使用教程的使用技巧和注意事项,需要的朋友参考一下 MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。默认情况下是没有开启缓存的,要开启二级缓存,你需要在你的SQL映射文件中添加一行: 字面上看就是这样。这个简单语句的效果如下: 1.映射语句文件中的所有s
在mapper中,我调用了一个proc'xyz',它返回所查询的ProcessType表的行列表的光标。