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);
....
}
}