baseAction,baseDao,baseService

SSH的

baseAction

简单叙述下作用

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

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

上代码

@ParentPackage("default")
@Namespace("/")
public class BaseAction<T> 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<T> 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<T> {

    /**
     * 保存一个对象
     *
     * @param o
     *            对象
     * @return 对象的ID
     */
    public Serializable save(T o);
}

方法太多 写个例子就好

serviceimpl实现类

@Service("BaseService")
@Transactional
public class BaseServiceImpl<T> implements BaseServiceI<T> {

    @Autowired
    private BaseDaoI<T> baseDao;

    @Override
    public Serializable save(T o) {
        return baseDao.save(o);
    }
}

注入baseDao具体实现方法

下面是BaseDao

BaseDaoI接口定义baseDao的方法

public interface BaseDaoI<T> {

    /**
     * 保存一个对象
     *
     * @param o
     *            对象
     * @return 对象的ID
     */
    public Serializable save(T o);
}

方法太多不再写

BaseDaoImpl

@Repository("baseDao")
public class BaseDaoImpl<T> implements BaseDaoI<T> {

    @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(方法太多不再写)

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

时间: 2024-08-01 05:09:25

baseAction,baseDao,baseService的相关文章

基于 Spring + Atomikos 的多数据源配置(含有BaseDao,BaseService)

1.spring配置文件 classpath:/system.properties classpath:/jdbc.properties classpath:/system.properties UTF-8 mysql xph datasource ${mysql_url_xph} ${mysql_user_xph} ${mysql_password_xph} mysql qs datasource ${mysql_url_qs} ${mysql_user_qs} ${mysql_passwor

配置日志文件

org.apache.log4j.Logger详解 1.概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息. 最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体. http://l

org.apache.log4j.Logger详解

1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息. 最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类 来封装此类操作,而不是让一系列的打印语句充斥了代码的主体. http://logging.apache.org/log4j

log4J详解

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j. 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://logging.apache.org/log4j/1.2/download.html 我们先看一个最简单的示例: [示例1] 项目结构: [注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下.在要使用的工程中按图所示进行引用 ] Java代码: Java代码  

log4j详解与实战

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j. 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://logging.apache.org/log4j/1.2/download.html 我们先看一个最简单的示例: [示例1] 项目结构: [注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下.在要使用的工程中按图所示进行引用 ] Java代码: Java代码  

org.apache.log4j.Logger 详解

org.apache.log4j.Logger 详解 1. 概述 1.1. 背景    在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息.   最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类 来封装此类操作,而不是让一系列的打印语句充斥了代码的主体.

关于log4j的日志操作

org.apache.log4j.Logger 详解 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息. 最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类 来封装此类操作,而不是让一系列的打印语句充斥了代码的主体. http://

log4j配置详解[http://www.iteye.com/topic/378077]

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j. 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://logging.apache.org/log4j/1.2/download.html 我们先看一个最简单的示例: [示例1] 项目结构: [注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下.在要使用的工程中按图所示进行引用 ] Java代码: Java代码  

认识Log4j

Log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j. 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://logging.apache.org/log4j/1.2/download.html 我们先看一个最简单的示例: [示例1] 项目结构: [注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下.在要使用的工程中按图所示进行引用 ] Java代码: Java代码