首页 > 解决方案 > jdbcTemplate.update 中的 java.lang.NullPointerException

问题描述

当我试图在我的数据库中插入数据时,我有一个 java.lang.NullPointerException。

这是我的配置 Spring 和我的代码:

应用程序上下文.xml:

 <bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
 
    <property name="jndiName" value="jdbc/userDb"/>
     
  </bean>



<bean class="com.example.UserDB" id="user">
        <property name="dataSource" ref="myDataSource"/

用户数据库.java:

public class UserAccountLog {

    protected JdbcTemplate jdbcTemplate;
    
    public void setDataSource(DataSource dataSource) {
        jdbcTemplate = new JdbcTemplate(dataSource);
    }
      public void insertNewUser(String username){

        jdbcTemplate.update( connection -> {
            PreparedStatement ps = connection.prepareStatement(sqlUserInsert, new String[]{"id"});
            int i =1;
            ps.setString(i++, username);
        
            return ps;});

    }

}

当他尝试这样做时,我遇到了这个错误jdbcTemplate.update( connection

java.lang.NullPointerException
    at com.example.UserDB.insertNewUser

我已经尝试在变量 Jdbc 中创建 @Autowired 注释,但也不起作用,

请问有人有想法吗?

标签: springjdbc

解决方案


DI 仅适用于容器管理的对象。如果要通过容器自动装配 UserDB 中的 jdbcTamplate 字段,则必须将容器带入游戏。@Autowire UserDB userDB;您必须通过容器(或UserDB userDB = context.getBean(UserDB);)而不是“手动”(UserBd userDB = new UserDB();)创建 UserDB 类实例


推荐阅读