做过几个系统,但是仔细分析发现他们有一个共同的特点,就是定义一个基础的模板变量,根据使用的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;
}
}
本文介绍了一个基于IBATIS框架的基础代码设计,通过定义抽象的模板变量实现与ORM框架的解耦,提供了通用的分页函数示例。深入探讨了IBATIS与MyBatis的namespace概念,并展示了如何在实现类中具体应用。
970

被折叠的 条评论
为什么被折叠?



