合并service和dao层,分俩层,即合并service层与Dao层为service层
准备有:
先实现Action类,DaoSupport接口,DaoSupportImpl类
一、 流程总结: 实现增删该查一组功能的步骤:
1. 做Action相关的准备:
a. 创建MyAction继承BaseAction
b. 定义Action中的方法,要写出方法名、作用、返回值
c. 创建所用到的JSP页面,空的未实现
d. 配置Action,在MyAction中加@Controller和@Scope("prototype")注解
e. 配置struts.xml
f. 测试
2. 做Service相关的准备:接口,实现类,配置
a. 创建接口MyService继承DaoSupport接口
b. 创建实现类MyServiceImpl继承DaoSupportImpl类
c. 在MyServiceImpl上写注解: @Service和@Transactional
3. 填空
a. Action方法
b. 新增的service方法
c. 修改jsp页面的内容: 拷贝写好的前端源代码,引入公共页面,修改路径,修改标签内容
二、 案例如下:
BaseAction类:
-------------------------------------------------------------------------------------------
package cn.itcast.oa.base;
public class BaseAction<T> extends ActionSupport implements ModelDriven<T>{
// 声明service
@Resource
protected DepartmentService departmentService;
@Resource
protected RoleService roleService;
// 对modelDriven的支持
protected T model;
public T getModel() {
return model;
}
// 获取泛型的具体类型
public BaseAction(){
try {
// 通过反射获取T的真实类型
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
// 通过反射创建model的实例
model = clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
-------------------------------------------------------------------------------------------
DaoSupport接口:
-------------------------------------------------------------------------------------------
// 定义通用的dao接口,里面包含常用的基本方法。
// 使用泛型其他dao接口继承该接口即可。
// 如果子接口中有另外的方法,则独自定义
public interface DaoSupport<T> {
/**
* 添加实体
*
* @param entity
*/
void save(T entity);
/**
* 删除实体
*
* @param id
*/
void delete(Long id);
/**
* 更新实体
*
* @param entity
*/
void update(T entity);
/**
* 根据id查询实体
*
* @param i