BaseDao设计

做过几个系统,但是仔细分析发现他们有一个共同的特点,就是定义一个基础的模板变量,根据使用的ORM框架不同饮用不同的模板变量,这里我举例ibatis的一种基础代码设计并给出了注释,感觉很优秀,记得总结记录

public abstract class BaseDaoImpl {
    /**
     * 引用ibatis的模板对象
     */
    @Autowired
    private SqlMapClientTemplate sqlMapClient;
    
    //setter
    public void setSqlMapClient(SqlMapClientTemplate sqlMapClient) {
        this.sqlMapClient = sqlMapClient;
    }
    //getter
    public SqlMapClientTemplate getSqlMapClient() {
        return sqlMapClient;
    }

    /**
     * 定义一个抽象的方法(有抽象方法的类必须是抽象类)
     * 改方法返回一个字符串类型
     * 改方法主要是做查询域用的,不管是ibatis或者是mybatis都有一个namespace的域空间,
     * 这里返回的值就是跟他们对于的XML忠namespace的定义一直,由实现类去实现
     * @return
     */
    public abstract String getNamespace();

    /**
     * 通用分页函数
     *
     * @param countNameSpace
     * @param pageNameSpace
     * @param paginator
     * @return
     */
    public Paginator paginateObject(String countNameSpace, String pageNameSpace, Paginator paginator) {
        Integer count = Integer.valueOf(sqlMapClient.queryForObject(getNamespace() + "." + countNameSpace, paginator).toString());
        List result = sqlMapClient.queryForList(getNamespace() + "." + pageNameSpace, paginator);
        paginator.setItems(count);
        paginator.setResults(result);
        return paginator;
    }
}

你可能感兴趣的:(设计模式/代码设计)