做过几个系统,但是仔细分析发现他们有一个共同的特点,就是定义一个基础的模板变量,根据使用的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; } }