baseAction,baseDao,baseService
SSH的
baseAction
简单叙述下作用
1.通用方法如增删改,获取表格,获取树等等常用方法
2.其他action继承baseAction达到基本不写代码或少写代码,使其他action具有baseAction的方法,同时可以自己特有的方法
上代码
@ParentPackage("default")
@Namespace("/")
public class BaseAction
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
将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
@Autowired
private BaseDaoI
@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
@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(方法太多不再写)
这样所有都以泛型写通用方法,使得每个继承类同事拥有父类的基础方法,也同时拥有自己特有的方法。如果某个方法要反复使用,就写成通用方法。大量的减少了代码