Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 初始化NamedParameterJdbcTemplate bean中的Null指针_Spring_Hibernate_Jdbctemplate_Named Parameters - Fatal编程技术网

Spring 初始化NamedParameterJdbcTemplate bean中的Null指针

Spring 初始化NamedParameterJdbcTemplate bean中的Null指针,spring,hibernate,jdbctemplate,named-parameters,Spring,Hibernate,Jdbctemplate,Named Parameters,如果我在控制器中使用 final DataSource dataSource = (DataSource) getApplicationContext().getBean("dataSource", DataSource.class); final JdbcTemplate jdbcTemplate = new JdbcTemplate(jdbcDataSource); final NamedParameterJdbcTemplate namedParameterJdbcTemplate = n

如果我在控制器中使用

final DataSource dataSource = (DataSource) getApplicationContext().getBean("dataSource", DataSource.class);
final JdbcTemplate jdbcTemplate = new JdbcTemplate(jdbcDataSource);
final NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
这很好用

如果我必须在Spring应用程序上下文中实现同样的功能

<bean id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate" autowire="constructor" />  

<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"
      id="namedParameterJdbcTemplate">  
    <constructor-arg ref="jdbcTemplate" />
</bean> 
这会引发错误


如果您已经在XML中声明了
jdbcTemplate
,那么是否有任何方法可以使名为parameterjdbctemplate的对象在存储库类中工作


不过,您确实需要在
JdbcTemplate
上设置数据源

一旦将
JdbcTemplate
自动连接到DAO中,就应该能够使用它来创建
NamedParameterJdbcTemplate

@Repository
public class DAOImpl implements DAO {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void foo() {
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
        ....
    }
}
在使用它之前,您需要实际创建它的一个实例

如果您想使用XML创建实例,您也可以这样做,但是您需要自动连接由XML创建的实例



然后,您只需将
NamedParameterJdbcTemplate
自动连接到DAO中。

如果我猜,在Hibernate存储库类中,NamedParameterJdbcTemplate似乎没有初始化为任何内容,这可能就是它抛出空指针的原因……“这引发错误”对我们没有帮助。向我们展示错误和堆栈跟踪。@ryekayo如果你不介意,你能用一个例子来展示吗
@Repository
public class DAOImpl implements DAO {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void foo() {
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
        ....
    }
}