为了账号安全,请及时绑定邮箱和手机立即绑定

Java泛型dao的问题,求助,急啊!!

Java泛型dao的问题,求助,急啊!!

qq_脚本 2015-09-17 17:09:21
最新在学习S2SH的整合,遇到了不少问题。。现在dao层只有IBaseDao 和 BaseDaoImpl;这两个做了CURD操作的的接口,和实现。Service层中的继承泛型dao层,问题是我在junit单元测试的时候,继承basedao的CURD操作没问题,但是service层自己的独有的方法一直报空指针,各位大神帮忙瞅瞅,很急,小弟先在这谢谢了!!下面是我代码!!IBaseDao.javapackage com.yeka.oa.dao;   import java.util.List;   public interface IBaseDao<T> {           public void save(T t);     public void delete(Integer id);     public void update(T t);     public T getObjectById(Integer id);     public List<T> getObjectAll();     public List<T> getObjetctByIds(Integer[] ids);   }BaseDaoImpl.javapackage com.yeka.oa.dao; import java.lang.reflect.ParameterizedType; import java.util.List;   import javax.annotation.Resource;   import org.hibernate.SessionFactory; import org.springframework.transaction.annotation.Transactional;   @SuppressWarnings("unchecked") @Transactional public class BaseDaoImpl<T> implements IBaseDao<T> {       // 注入sessionFactory     @Resource     public SessionFactory sessionFactory;           /**      * @return the sessionFactory      */     public SessionFactory getSessionFactory() {         return sessionFactory;     }       /**      * @param sessionFactory the sessionFactory to set      */     public void setSessionFactory(SessionFactory sessionFactory) {         this.sessionFactory = sessionFactory;     }       Class clazz;       // 得到T的真实类型     public BaseDaoImpl() {         ParameterizedType tP = (ParameterizedType) this.getClass()                 .getGenericSuperclass();         clazz = (Class) tP.getActualTypeArguments()[0];         System.out.println(clazz.getName());     }       /**      * 删除      */     public void delete(Integer id) {         // TODO Auto-generated method stub         sessionFactory.getCurrentSession().delete(                 sessionFactory.getCurrentSession().get(clazz, id));     }       /**      * 获取对象列表      */     public List<T> getObjectAll() {         // TODO Auto-generated method stub         return sessionFactory.getCurrentSession().createQuery(                 "from " + clazz.getSimpleName()).list();     }       /**      * 根据ID查询对象      */     public T getObjectById(Integer id) {         return (T) sessionFactory.getCurrentSession().get(clazz, id);     }       /**      * 根据ID数组获取一组对象集合      */     public List<T> getObjetctByIds(Integer[] ids) {         return sessionFactory.getCurrentSession().createQuery(                 "from " + clazz.getSimpleName() + " where id in(:ids)")                 .setParameter("ids", ids).list();     }           public void save(T t) {         sessionFactory.getCurrentSession().save(t);     }       public void update(T t) {         sessionFactory.getCurrentSession().update(t);     }   }IEmployeeService.javapackage com.yeka.oa.service;   import java.util.List;   import javax.annotation.Resource;   import com.yeka.oa.dao.IBaseDao; import com.yeka.oa.entity.SysEmployee;   public interface IEmployeeService extends IBaseDao<SysEmployee> {     //定义特有方法           //登录     public boolean login(String username,String password);           //分页查询     public List<SysEmployee> getPagination(int pageIndex, int pageSize);   }EmployeeServiceImpl.javapackage com.yeka.oa.service.impl;   import java.util.List;   import org.hibernate.Query; import org.hibernate.Session; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;   import com.yeka.oa.dao.BaseDaoImpl; import com.yeka.oa.entity.SysEmployee; import com.yeka.oa.service.IEmployeeService;   @Transactional @Service("employeeService") public class EmployeeServiceImpl extends BaseDaoImpl<SysEmployee> implements IEmployeeService {           Session session = super.getSessionFactory().getCurrentSession();     @SuppressWarnings("unchecked")     public List<SysEmployee> getPagination(int pageIndex, int pageSize) {         String hql = "from SysEmployee";                   Query query = session.createQuery(hql);         query.setMaxResults(pageSize);// 一次查询几条         query.setFirstResult((pageIndex - 1) * pageSize);// 从第几条开始查询         return query.list();     }       public boolean login(String username, String password) {         boolean flag = true;         String hql = "select password from SysEmployee where username='"     + username + "'";           Query query = session.createQuery(hql);         String temppwd = (String) query.uniqueResult();         if (password != null && temppwd.equals(password)) {             flag = true;         } else {             flag = false;         }           return flag;       }   }  Test.javaimport org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.transaction.annotation.Transactional;   import com.yeka.oa.service.IEmployeeService;   public class Test {           @Transactional     @org.junit.Test     public void test(){         ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");         IEmployeeService employeeService = (IEmployeeService) context.getBean("employeeService");         employeeService.getObjectAll();         employeeService.login("11", "111");     }   }
查看完整描述

2 回答

  • 2 回答
  • 2 关注
  • 2268 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信