0

这是给我的方法NullPointerException。我已将其缩小到查询数据库的行。

代码没有到达第二个记录器。在打印出来之前抛出异常。

更新:我刚刚测试了 jdbcTemplate,它是 NULL。

public boolean usernameVerificationProcessService(String string){
    HomeController.logger.info("In method usernameVerificationProcessService in UIDao.");
    HomeController.logger.info("Attention: " + string);
    boolean result = false;
    String sql = "select count(*) from users where username = ?";
    int count = this.jdbcTemplate.queryForObject(sql, new Object[]{string}, java.lang.Integer.class);
    HomeController.logger.info("Attention: " + count);
    if(count == 0) {
        result = true;
    }
    return result;
}

这是配置文件描述。我正在使用一个BasicDataSource和 MySQL。

<beans:bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
    <beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <beans:property name="url" value="jdbc:mysql://localhost:3306"/>
    <beans:property name="username" value="test"/>
    <beans:property name="password" value="test"/>
    <beans:property name="initialSize" value="2" />
    <beans:property name="maxActive" value="5" />
</beans:bean>
4

2 回答 2

1

您是否忘记将 jdbcTemplate 注入到对象中?

public class DBaseAccess {
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
  .......
}

您必须将 jdbcTemplate 注入到 spring 配置文件 (applicationContext.xml) 中的对象中

 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource" />
 </bean>
 <bean id="dBaseAccess" class="coc.taf.dbase.DBaseAccess">
    <property name="jdbcTemplate" ref="jdbcTemplate" />
 </bean>
于 2013-05-24T02:14:55.273 回答
-1

您永远不会string检查null. 我猜它在 NPE 上失败了。

于 2013-05-23T22:32:19.200 回答