读书人

java线程执行sql报指针null的异常

发布时间: 2013-08-04 18:26:16 作者: rapoo

java线程执行sql报指针null的错误
我写程式需要在线程要对数据库操作 当我执行 emailDao.executeSql 报 java.lang.NullPointerException的错误求高手帮忙解决tks。

public class SendMailThread extends Thread {
private boolean enab = true;
private int cnts = 0;
private long sleepTimes = 0L;
private int sendindex = 1;
private final Log log = LogFactory.getLog(getClass());
private EmailDao<Temail> emailDao;

public EmailDao<Temail> getEmailDao() {
return emailDao;
}
@Autowired
public void setEmailDao(EmailDao<Temail> emailDao) {
this.emailDao = emailDao;
}

//设定线程是否停止
public void setEnab(boolean enab) {
this.enab = enab;
}

public int getCnts(){
return this.cnts;
}

public void run() {
try {
Iterator iterator1 = emailDao.executeSql("SELECT b.qqnum FROM paipaihelper.tremail a join paipaihelper.tremailmx b on a.id=b.pid where b.enab='Y'").iterator();
while (iterator1.hasNext()) {
System.out.println(iterator1.next().toString());
}
} catch (InterruptedException e) {
log.error("ss", e);
}
}
}

Java 多线程 指针
[解决办法]
你的异常是哪一行呢?
猜测emailDao自动装箱失败,相关配置贴出来看看?EmailDao类的源码
[解决办法]
emailDao应该需要在spring配置事务控制,要不然不会自动初始化,肯定报空啦
[解决办法]
public EmailDao<Temail> getEmailDao() {
return emailDao;
}
@Autowired
public void setEmailDao(EmailDao<Temail> emailDao) {
this.emailDao = emailDao;


}

红色的应该注入到getEmailDao上啊
[解决办法]
这是注解配置问题,在配置文件中需要添加
<!-- 自动扫描的包名-->
<context:component-scan base-package="com.core.*"></context:component-scan>
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />
在自动扫描包的时候需要将你需要注入的类的所在包及相关对象的包全部进行扫描,我这里是扫描所有的包,绝对支持所有注入,但是对效率有影响了。
[解决办法]
spring注入问题吧

读书人网 >Java Web开发

热点推荐