baseAction,baseDao,baseService

简介: SSH的 baseAction 简单叙述下作用 1.通用方法如增删改,获取表格,获取树等等常用方法 2.其他action继承baseAction达到基本不写代码或少写代码,使其

SSH的

baseAction

简单叙述下作用

1.通用方法如增删改,获取表格,获取树等等常用方法

2.其他action继承baseAction达到基本不写代码或少写代码,使其他action具有baseAction的方法,同时可以自己特有的方法

上代码

@ParentPackage("default")

@Namespace("/")

public class BaseAction extends ActionSupport {

private static final Logger logger = Logger.getLogger(BaseAction.class);

protected int page = 1;// 当前页

protected int rows = 10;// 每页显示记录数

protected String sort;// 排序字段

protected String order = "asc";// asc/desc

protected String q;// easyui的combo和其子类过滤时使用

protected String id;// 主键

protected String ids;// 主键集合,逗号分割

protected T data;// 数据模型(与前台表单name相同,name="data.xxx")

protected BaseServiceI service;// 业务逻辑 /** * 获得request * * @return */ public HttpServletRequest getRequest() { return ServletActionContext.getRequest(); } /** * 获得response * * @return */ public HttpServletResponse getResponse() { return ServletActionContext.getResponse(); } /** * 获得session * * @return */ public HttpSession getSession() { return ServletActionContext.getRequest().getSession(); } /** * 保存一个对象 */ public void save() { Json json = new Json(); if (data != null) { service.save(data); json.setSuccess(true); json.setMsg("新建成功!"); } writeJson(json); } /** * 更新一个对象 */ public void update() { Json json = new Json(); String reflectId = null; try { if (data != null) { reflectId = (String) FieldUtils.readField(data, "id", true); } } catch (IllegalAccessException e) { e.printStackTrace(); } if (!StringUtils.isBlank(reflectId)) { try { T t = service.getById(reflectId); BeanUtils.copyProperties(data,t); service.update(t); json.setSuccess(true); json.setMsg("更新成功"); } catch (Exception e) { json.setSuccess(false); json.setMsg("更新失败"); logger.info(e.toString()); } } writeJson(json); } /** * 删除一个对象 */ public void delete() { Json json = new Json(); if (!StringUtils.isBlank(id)) { T t = service.getById(id); service.delete(t); json.setSuccess(true); json.setMsg("删除成功!"); } writeJson(json); }}

将BaseActiong写成泛型 这样前台写成data.xxx就可以自动被Struts的类型转换为data

这样对每次操作自动匹配不同的Bean类,非常方便。

service层

serviceI接口定义不同的方法方法

public interface BaseServiceI {

/**

* 保存一个对象

*

* @param o

* 对象

* @return 对象的ID

*/

public Serializable save(T o);

}

方法太多 写个例子就好

serviceimpl实现类

@Service("BaseService")

@Transactional

public class BaseServiceImpl implements BaseServiceI {

@Autowired

private BaseDaoI baseDao;

@Override

public Serializable save(T o) {

return baseDao.save(o);

}

}

注入baseDao具体实现方法

下面是BaseDao

BaseDaoI接口定义baseDao的方法

public interface BaseDaoI {

/**

* 保存一个对象

*

* @param o

* 对象

* @return 对象的ID

*/

public Serializable save(T o);

}

方法太多不再写

BaseDaoImpl

@Repository("baseDao")

public class BaseDaoImpl implements BaseDaoI {

@Autowired

private SessionFactory sessionFactory;

/**

* 获得当前事物的session

*

* @return org.hibernate.Session

*/

public Session getCurrentSession() {

return sessionFactory.getCurrentSession();

}

@Override

public Serializable save(T o) {

if (o != null) {

return getCurrentSession().save(o);

}

return null;

}

}

BaseDaoimpl需要注入sessionFactory(方法太多不再写)

这样所有都以泛型写通用方法,使得每个继承类同事拥有父类的基础方法,也同时拥有自己特有的方法。如果某个方法要反复使用,就写成通用方法。大量的减少了代码