spring namedParameterJdbcTemplate 空指针报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring namedParameterJdbcTemplate 空指针报错相关的知识,希望对你有一定的参考价值。

Error creating bean with name 'namedParameterJdbcTemplate' defined in ServletContext resource [/WEB-INF/dorado-home/app-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.<init>()
<!-- 配置一个数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/cnisreps?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>

<bean id="testLoginDao" class="com.test.name.manage.TestLoginDao">
<property name="dataSource" ref="dataSource"></property>
</bean>

<!-- 配置一个namedParameterJdbcTemplate -->
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>

这个是启动报错

非常清楚, 明显org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate没有默认构造方法(无参数的构造方法), 所以你可以看一下这个类的Outline, 看看都有哪些初始化构造方法。 给你个 datasource作为构造参数传入, 这个是初始化必须的参数,不能在初始化时用setter方法作为一属性设置入

<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="datasource"/>
</bean>追问

恩说的没错,我还有一事想问下。启动可以了,但是到了执行namedParameterJdbcTemplate会空指针报错

this.namedParameterJdbcTemplate.update("insert into text_login (UID,USERNAME,USERPASS) values (:id,:name,:pass)", parameters);
parameters代表map

追答

把堆栈打出来看看

把堆栈打出来看看

追问

ERROR (ViewServiceResolver.java:230)
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)

参考技术A nested exception is java.lang.NoSuchMethodException:
没找到方法追问

恩,我确定我的class写的没问题,我用ctrl试过。
我是看例子写的XML。不知道哪块的错误。 namedParameterJdbcTemplate在我的testLoginDao里有Set方法。

以上是关于spring namedParameterJdbcTemplate 空指针报错的主要内容,如果未能解决你的问题,请参考以下文章

Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC

学习笔记——Spring简介;Spring搭建步骤;Spring的特性;Spring中getBean三种方式;Spring中的标签

Spring--Spring入门

Spring框架--Spring事务管理和Spring事务传播行为

Spring框架--Spring事务管理和Spring事务传播行为

Spring框架--Spring JDBC