首先我定义了GenericDao、GenericDaoImpl、GenericService、GenericServiceImpl,如下:
GenericDao:public interface GenericDao<T> {
public void save(T entity);
public void remove(T entity);
public void modify(T entity);
}GenericDaoImpl:public class GenericDaoImpl<T> implements
GenericDao<T> {
private Class<T> type;
private HibernateTemplate hibernateTemplate;
public GenericDaoImpl(Class<T> type) {
this.type = type;
}
public GenericDaoImpl(){}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void modify(T entity) {
hibernateTemplate.update(entity);
}
public void remove(T entity) {
hibernateTemplate.delete(entity);
}
public void save(T entity) {
hibernateTemplate.save(entity);
}
}GenericService:public interface GenericService<T> { public void save(T entity); public void remove(T entity); public void modify(T entity);
}GenericServiceImpl:public class GenericServiceImpl<T> implements
GenericService<T> {
private GenericDao<T> genericDao; public void modify(T entity) {
genericDao.modify(entity);
}
public void remove(T entity) {
genericDao.remove(entity);
}
public void save(T entity) {
genericDao.save(entity);
}
public void setGenericDao(GenericDao<T> genericDao) {
this.genericDao = genericDao;
}
}然后我定义了UserDao、UserDaoImpl、UserService和UserServiceImpl,分别继承自它们,如下:
UserDao:public interface UserDao extends GenericDao<User>{
public User findByNameExact(String uname);
}UserDaoImpl:public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao { public UserDaoImpl(){
super(User.class);
} public User findByNameExact(String uname) {System.out.println("aa");
List<User> list = (List<User>) this.getHibernateTemplate().find(
"from User where userName = '"+uname+"'");
return (!list.isEmpty() && list.size() == 1) ? list.get(0) : null;
}
}UserService:public interface UserService extends GenericService<User>{
public User exist(String userName);
}UserServiceImpl:public class UserServiceImpl extends GenericServiceImpl<User> implements UserService{
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
} public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} public User exist(String userName) {
// TODO Auto-generated method stub
return userDao.findByNameExact(userName);
}}
此时我的spring配置文件应该怎么写才对?
GenericDao:public interface GenericDao<T> {
public void save(T entity);
public void remove(T entity);
public void modify(T entity);
}GenericDaoImpl:public class GenericDaoImpl<T> implements
GenericDao<T> {
private Class<T> type;
private HibernateTemplate hibernateTemplate;
public GenericDaoImpl(Class<T> type) {
this.type = type;
}
public GenericDaoImpl(){}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void modify(T entity) {
hibernateTemplate.update(entity);
}
public void remove(T entity) {
hibernateTemplate.delete(entity);
}
public void save(T entity) {
hibernateTemplate.save(entity);
}
}GenericService:public interface GenericService<T> { public void save(T entity); public void remove(T entity); public void modify(T entity);
}GenericServiceImpl:public class GenericServiceImpl<T> implements
GenericService<T> {
private GenericDao<T> genericDao; public void modify(T entity) {
genericDao.modify(entity);
}
public void remove(T entity) {
genericDao.remove(entity);
}
public void save(T entity) {
genericDao.save(entity);
}
public void setGenericDao(GenericDao<T> genericDao) {
this.genericDao = genericDao;
}
}然后我定义了UserDao、UserDaoImpl、UserService和UserServiceImpl,分别继承自它们,如下:
UserDao:public interface UserDao extends GenericDao<User>{
public User findByNameExact(String uname);
}UserDaoImpl:public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao { public UserDaoImpl(){
super(User.class);
} public User findByNameExact(String uname) {System.out.println("aa");
List<User> list = (List<User>) this.getHibernateTemplate().find(
"from User where userName = '"+uname+"'");
return (!list.isEmpty() && list.size() == 1) ? list.get(0) : null;
}
}UserService:public interface UserService extends GenericService<User>{
public User exist(String userName);
}UserServiceImpl:public class UserServiceImpl extends GenericServiceImpl<User> implements UserService{
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
} public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} public User exist(String userName) {
// TODO Auto-generated method stub
return userDao.findByNameExact(userName);
}}
此时我的spring配置文件应该怎么写才对?
<beans>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="genericDao" abstract="true">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="userDao" class="com.yourpackage.UserDaoImpl" parent="genericDao">
</bean>
</beans>
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
super.setGenericDao(userDao);
}
不然GenericService中的dao总是空
但是我感觉GenericDaoImpl这个实现是不是有点问题 啊。
我们在项目中的应用是需要获取到运行时类的信息,然后做操作...