读书人

SSH项目中遇到的有关问题请高手解答

发布时间: 2012-04-14 17:14:21 作者: rapoo

SSH项目中遇到的问题,请高手解答。
dao层实现方法:

Java code
package com.ailincms.dao.impl;import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;import com.ailincms.bean.CMSUser;import com.ailincms.dao.CMSUserDao;@Repository(value="cMSUserDaoBean") @Transactionalpublic class CMSUserDaoBean implements CMSUserDao {    @Resource SessionFactory factory;    public void createCMSUser(CMSUser cmsuser) {        try{            factory.getCurrentSession().persist(cmsuser);        } catch(RuntimeException e) {            throw e;        }    }    public void updateCMSUser(CMSUser cmsuser) {        try{            factory.getCurrentSession().merge(cmsuser);        } catch(RuntimeException e) {            throw e;        }    }    public void deleteByUsername(String username) {        try{            factory.getCurrentSession().delete(factory.getCurrentSession().createQuery("from CMSUser as user where user.username='"+username+"'").uniqueResult());        } catch(RuntimeException e) {            throw e;        }    }    public void deleteByUserid(Integer userid) {        try {            factory.getCurrentSession().delete(factory.getCurrentSession().get(CMSUser.class, userid));        } catch (RuntimeException e) {            throw e;        }    }        @SuppressWarnings("unchecked")    @Transactional(propagation=Propagation.NOT_SUPPORTED)    public List<CMSUser> findByProperty(String propertyName, Object value) {        try {            return factory.getCurrentSession().createQuery("from CMSUser as user where user."+propertyName+" = '"+value+"' ").list();        } catch (RuntimeException e) {            throw e;        }    }        @Transactional(propagation=Propagation.NOT_SUPPORTED)    public CMSUser findByUsername(String username) {        Query q = factory.getCurrentSession().createQuery("from CMSUser as user where user.username=?");        q.setString(0, username);        return (CMSUser)q.uniqueResult();    }        @Transactional(propagation=Propagation.NOT_SUPPORTED)    public CMSUser findByUserid(Integer userid) {        try {            return (CMSUser)factory.getCurrentSession().get(CMSUser.class, userid);        } catch (RuntimeException e) {            throw e;        }    }        @SuppressWarnings("unchecked")    @Transactional(propagation=Propagation.NOT_SUPPORTED)    public List<CMSUser> getAllCMSUser() {        try {            return factory.getCurrentSession().createQuery("from CMSUser").list();        } catch (RuntimeException e) {            throw e;        }    }    }


service层方法:
Java code
package com.ailincms.service.impl;import java.util.Date;import org.springframework.stereotype.Service;import com.ailincms.bean.CMSUser;import com.ailincms.dao.CMSUserDao;import com.ailincms.dao.impl.CMSUserDaoBean;import com.ailincms.service.CMSUserService;@Service(value="cMSUserServiceBean")public class CMSUserServiceBean implements CMSUserService {        CMSUserDao userDao = new CMSUserDaoBean();        public void validateCMSUser(String username, String password) {        try{            CMSUser cmsUser = userDao.findByUsername(username);            System.out.println(cmsUser.getPassword());        } catch(Exception e){            e.printStackTrace();        }    }    public Date getLoginTime(String username) {                return null;    }}


Junit测试代码:


1. CMSUser_CRUD

Java code
package com.ailincms.Junit;import java.util.List;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ailincms.bean.CMSUser;import com.ailincms.dao.CMSUserDao;public class CMSUser_CRUD {        private static CMSUserDao userService;    private static CMSUser cmsUser;    @BeforeClass    public static void setUpBeforeClass() throws Exception {        ApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");        userService  = (CMSUserDao)act.getBean("cMSUserDaoBean");        cmsUser  = (CMSUser)act.getBean("cMSUser");    }    @Test    public void createCMSUser() {        cmsUser.setUsername("xql");        cmsUser.setPassword("linlin520");        userService.createCMSUser(cmsUser);    }        @Test    public void findByUserid(){        CMSUser cmsUser = userService.findByUserid(1);        System.out.println(cmsUser.getPassword());    }        @Test    public void findByUsername(){        CMSUser cmsUser = userService.findByUsername("admin");        System.out.println(cmsUser.getPassword());    }        @Test    public void getAllCMSUser(){        List<CMSUser> list = userService.getAllCMSUser();        for (CMSUser cmsUser : list){            System.out.println(cmsUser.getUsername());        }    }        @Test    public void findByProperty(){        List<CMSUser> list = userService.findByProperty("password", "linlin520");        for (CMSUser cmsUser : list){            System.out.println(cmsUser.getUsername());        }    }        @Test    public void deleteByUserid(){        userService.deleteByUserid(1);    }        @Test    public void deleteByUsername(){        userService.deleteByUsername("xql");    }        @Test    public void updateCMSUser(){        CMSUser cmsUser = userService.findByUserid(1);        cmsUser.setUsername("admin");        userService.updateCMSUser(cmsUser);    }}

2. service方法测试:
Java code
package com.ailincms.service.impl;import java.util.Date;import org.springframework.stereotype.Service;import com.ailincms.bean.CMSUser;import com.ailincms.dao.CMSUserDao;import com.ailincms.dao.impl.CMSUserDaoBean;import com.ailincms.service.CMSUserService;@Service(value="cMSUserServiceBean")public class CMSUserServiceBean implements CMSUserService {        CMSUserDao userDao = new CMSUserDaoBean();        public void validateCMSUser(String username, String password) {        try{            CMSUser cmsUser = userDao.findByUsername(username);            System.out.println(cmsUser.getPassword());        } catch(Exception e){            e.printStackTrace();        }    }    public Date getLoginTime(String username) {                return null;    }}


现在问题是在DAO层的CRUD测试中,全部通过,没问题。测试getByUsername()方法也能正确打印出password。
可在测试service层validateCMSUser()方法时,却总报空指针异常。

请问是哪里的问题?

[解决办法]
你的seriver里的dao也要提供get set方法,并且要注入
[解决办法]
加上public CMSUserDao getUserDao() {
return userDao;
}

@Resource(name="cMSUserDaoBean")
public void setUserDao(CMSUserDao userDao) {
this.userDao = userDao;
}

读书人网 >J2EE开发

热点推荐