日期:2014-05-19  浏览次数:20613 次

SSH 查询所有数据的测试类 报空指针 求指教
三层架构: 
Dao层:

package com.shhelian.app.dao;
import java.util.List;

public interface MasterDao {
public List find(String hql);

}
Impl:
package com.shhelian.app.dao.impl;
import java.util.List;
import javax.persistence.Entity;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;
import com.shhelian.app.dao.MasterDao;

@Entity
@Component("MasterDao")
public class MasterDaoImpl extends HibernateDaoSupport implements MasterDao {

@Override
public List find(String hql) {
return super.getHibernateTemplate().find(hql);
}

@Autowired
  public void overSessionFactory(SessionFactory sessionFactory) {
  super.setSessionFactory(sessionFactory);
  }

}
server层:
package com.shhelian.app.service;

import java.util.List;

public interface MasterServer {
public List getAll();

}
Impl:
package com.shhelian.app.service.impl;

import java.util.List;

import javax.persistence.Entity;

import org.springframework.stereotype.Component;

import com.shhelian.app.dao.MasterDao;
import com.shhelian.app.service.MasterServer;

@Entity
@Component("MasterService")
public class MasterServerImpl implements MasterServer {

public MasterDao mdao;

@Override
public List getAll() {
System.out.println("xxxxxxxxx");
return this.mdao.find("from Form_Account_Master");

}

public void setMdao(MasterDao mdao) {
this.mdao = mdao;
}

}
这是我写的一个测试类 。 查询Form_Account_master表中的数据的size 
package com.shhelian.app.util;

import java.util.List;

import com.shhelian.app.model.FormAccountMaster;
import com.shhelian.app.service.impl.MasterServerImpl;

public class Test {

private static CustomerContextHolder ch;
private static DataSourceMap dp;

public static void main(String[] args) {
ch.setCustomerType(dp.yxh); //设置数据源
MasterServerImpl mp = new MasterServerImpl(); 
List list = mp.getAll();
System.out.println(list.size());
}
}

报空指针的错误 ,代码很简单 可是错误我找了好久都没有找到,求大神帮忙 。 还有我Spring配置文件里配置的是两个数据源:分别是Mysql和Sqlserver 项目部署的时候没有任何问题。 下面是错误提示:
xxxxxxxxx --- 这里是我上面代码中输出的
Exception in thread "main" java.lang.NullPointerException
at com.shhelian.app.service.impl.MasterServerImpl.getAll(MasterServerImpl.java:21)
at com.shhelian.app.util.Test.main(Test.java:16)


------解决方案--------------------
测试类要这样写:

package com.honglin.test;

import java.util.List;

import net.sf.json.JSONArray;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.honglin.dao.HrDepartmentDao;
import com.honglin.dao.HrPostDao;
import com.honglin.dao.HrStaffDao;
import com.honglin.dao.impl.HrDepartmentDaoImpl;
im