CRM-BaseService的抽取
在项目如果使用了Spring IOC容器的话,那么对于BaseService的抽取,就有技巧性的问题了。
核心: 如何给BaseService注入BaseDao (这里bean的注入采用的是注解方式)
代码实现:
//BaseService接口
public interface IBaseService<T> {
//新增
public void save(T entity);
//更新
public void update(T entity);
//根据id删除
public void delete(Serializable id);
//根据id查找
public T findObjectById(Serializable id);
//查找列表
public List<T> findObjects();
}
//BaseService实现
public class BaseServiceImpl<T> implements BaseService<T> {
private BaseDao<T> baseDao;
//利用set方法实现赋值
public void setBaseDao(BaseDao<T> baseDao) {
this.baseDao = baseDao;
}
@Override
public void save(T entity) {
baseDao.save(entity);
}
@Override
public void update(T entity) {
baseDao.update(entity);
}
@Override
public void delete(Serializable id) {
baseDao.delete(id);
}
@Override
public T findObjectById(Serializable id) {
return baseDao.findObjectById(id);
}
@Override
public List<T> findObjects() {
return baseDao.findObjects();
}
}
//UserService 对BaseService的使用
@Service("userService")
public class UserServiceImpl extends BaseServiceImpl<User> implements UserService {
private UserDao userDao;
//注解加在set方法上
@Resource
public void setUserDao(UserDao userDao) {
super.setBaseDao(userDao);
this.userDao = userDao;
}
}