由于工作原因,这段时间需要接触Spring+Struts+Ibatis.所以参考或研究了下相关资源,写了一个简单的小例子,废话不多说,下面我们来谈谈SSI持久层的优化。
以前在写项目的时候,持久层都是针对一个业务层至少一个持久层的(多数项目如此),这种项目结构,无形中给我们增加了很多的工作量和无用的代码。我的例子中,持久层一共只有2个类,一个接口(实现数据UPDATE、Query操作),一个接口实现.接口代码如下:
/**
* @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @param parameterObject 要插入的对象(map/javaBean) * @function 插入一条数据 */ public void insert(String statementName,Object parameterObject); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @function 插入一条数据 */ public void insert(String statementName); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @param parameterObject 删除条件对象(map/javaBean) * @function 删除一条记录 * @return 删除结果 */ public int delete(String statementName, Object parameterObject); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @function 删除一条记录 * @return 删除结果 */ public int delete(String statementName); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @param parameterObject 查询条件对象(map/javaBean) * @function 查询单条记录 * @return 符合条件的对象 */ public Object queryForObject(String statementName,Object parameterObject); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @function 查询单条记录 * @return 符合条件的对象 */ public Object queryForObject(String statementName); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @param parameterObject 查询条件对象(map/javaBean) * @function 查询集合记录 * @return 符合条件的记录集合 */ public List queryForList(String statementName,Object parameterObjec); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @function 无条件查询 * @return 符合条件的记录集合 */ public List queryForList(String statementName); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @param start 起始页 * @param ent 结束页 * @function 分页查询 * @return 符合条件的集合列表 */ public List queryForPage(String statementName,int start,int end); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @param parameterObject 修改条件对象(map/javaBean) * @function 更新一条记录 * @return 更新结果 */ public int update(String statementName, Object parameterObject); /** * @author Wilr * @date 2011-10-5 * @param statementName Ibatis配置中对应标签语句ID号 * @function 更新一条记录 * @return 更新结果 */ public int update(String statementName);
接口实现类代码如下:
@Override
public void insert(String statementName, Object parameterObject) { this.getSqlMapClientTemplate().insert(statementName,parameterObject); } @Override public void insert(String statementName) { this.getSqlMapClientTemplate().insert(statementName); } @Override public int delete(String statementName, Object parameterObject) { return this.getSqlMapClientTemplate().delete(statementName,parameterObject); } @Override public int delete(String statementName) { return this.getSqlMapClientTemplate().delete(statementName); } @Override public Object queryForObject(String statementName, Object parameterObject) { return this.getSqlMapClientTemplate().queryForObject(statementName,parameterObject); } @Override public Object queryForObject(String statementName) { return this.getSqlMapClientTemplate().queryForObject(statementName); } @Override public List queryForList(String statementName, Object parameterObjec) { return this.getSqlMapClientTemplate().queryForList(statementName,parameterObjec); } @Override public List queryForList(String statementName) { return this.getSqlMapClientTemplate().queryForList(statementName); } @Override public List queryForPage(String statementName,int start,int end) { return this.getSqlMapClientTemplate().queryForList(statementName, start, end); } @Override public int update(String statementName, Object parameterObject) { return this.getSqlMapClientTemplate().update(statementName,parameterObject); } @Override public int update(String statementName) { return this.getSqlMapClientTemplate().update(statementName); }
第一次在ITEYE写东西,写的不好的地方请多多指教,请各位多多指教!谢谢