package com.fastrise.fastdev.base.dao;
import java.util.List;
import java.util.Map;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import com.ibatis.sqlmap.client.SqlMapClient;
/**封装 ibatis 的通用DAO(Data Access Object)基类的接口.
* @author luyancan
* @created 2009-7-27
*/
public interface IbatisDao {
/**
* 根据主键ID查询对象.
* @param sqlMapId
* @param primaryKey
* @return
*/
public Object getById(String sqlMapId,Object primaryKey);
/**
* 新增对象.
* @param sqlMapId
* @param paramObject 参数对象
* @return
*/
public Object insert(String sqlMapId, Object paramObject);
/**
* 更新对象.
* @param sqlMapId
* @param paramObject 参数对象
* @return
*/
public int update(String sqlMapId, Object paramObject);
/**
* 批量删除对象.
* @param sqlMapId
* @param paramObject 参数对象
* @return
*/
public int delete(String sqlMapId, Object paramObject);
/**
* 查询唯一对象.
* @param sqlMapId
* @param paramObject 参数对象
* @return
*/
public Object queryForObject(String sqlMapId, Object paramObject);
/**
* 查询唯一对象.
* @param sqlMapId
* @param paramObject 参数对象
* @param resultObject 返回对象
* @return
*/
public Object queryForObject(String sqlMapId, Object paramObject, Object resultObject);
/**
* 查询对象.
* @param sqlMapId
* @param paramObject 参数对象
* @return
*/
@SuppressWarnings("unchecked")
public List queryForList(String sqlMapId, Object paramObject);
/**
* 查询对象.
* @param sqlMapId
* @param paramObject 参数对象
* @param start 起始记录
* @param limit 查询记录数
* @return
*/
@SuppressWarnings("unchecked")
public List queryForList(String sqlMapId, Object paramObject, int start, int limit);
/**
* 查询对象返回map类型.
* @param sqlMapId
* @param paramObject 参数对象
* @param keyProp
* @return
*/
@SuppressWarnings("unchecked")
public Map queryForMap(String sqlMapId, Object paramObject, String keyProp);
/**
* 查询对象返回map类型.
* @param sqlMapId
* @param paramObject 参数对象
* @param keyProp
* @param valueProp
* @return
*/
@SuppressWarnings("unchecked")
public Map queryForMap(String sqlMapId, Object paramObject, String keyProp, String valueProp);
/**
* 批量执行,用于批量执行开始前调用.
*/
public void startBatch() throws DAOException;
/**
* 批量执行,配合startBatch()调用.
* @return
*/
public int executeBatch() throws DAOException;
public SqlMapClient getSqlMapClient();
public SqlMapClientTemplate getSqlMapClientTemplate();
}
package com.fastrise.fastdev.base.dao.ibatis;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.fastrise.fastdev.base.dao.DAOException;
import com.fastrise.fastdev.base.dao.IbatisDao;
/**
* 封装 ibatis 的通用DAO(Data Access Object)基类的实现.
*
* @author luyancan
* @created 2009-7-27
*/
public class BaseIbatisDao extends SqlMapClientDaoSupport implements IbatisDao {
public int delete(String sqlMapId, Object paramObject) {
return getSqlMapClientTemplate().delete(sqlMapId, paramObject);
}
public Object getById(String sqlMapId, Object primaryKey) {
return getSqlMapClientTemplate().queryForObject(sqlMapId, primaryKey);
}
public Object insert(String sqlMapId, Object paramObject) {
return getSqlMapClientTemplate().insert(sqlMapId, paramObject);
}
@SuppressWarnings("unchecked")
public List queryForList(String sqlMapId, Object paramObject) {
return getSqlMapClientTemplate().queryForList(sqlMapId, paramObject);
}
@SuppressWarnings("unchecked")
public List queryForList(String sqlMapId, Object paramObject,int startRecord, int maxRecord) {
return getSqlMapClientTemplate().queryForList(sqlMapId, paramObject,startRecord, maxRecord);
}
@SuppressWarnings("unchecked")
public Map queryForMap(String sqlMapId, Object paramObject, String keyProp) {
return getSqlMapClientTemplate().queryForMap(sqlMapId, paramObject,keyProp);
}
@SuppressWarnings("unchecked")
public Map queryForMap(String sqlMapId, Object paramObject, String keyProp,
String valueProp) {
return getSqlMapClientTemplate().queryForMap(sqlMapId, paramObject,keyProp, valueProp);
}
public Object queryForObject(String sqlMapId, Object paramObject) {
return getSqlMapClientTemplate().queryForObject(sqlMapId, paramObject);
}
public Object queryForObject(String sqlMapId, Object paramObject,
Object resultObject) {
return getSqlMapClientTemplate().queryForObject(sqlMapId, paramObject,resultObject);
}
public void startBatch() throws DAOException {
try {
getSqlMapClient().startBatch();
} catch (SQLException e) {
throw new DAOException(" Ibatis SqlMapClient start batch excute exception !", e);
}
}
public int executeBatch() throws DAOException {
try {
return getSqlMapClient().executeBatch();
} catch (SQLException e) {
throw new DAOException(" Ibatis SqlMapClient batch excute exception !", e);
}
}
public int update(String sqlMapId, Object paramObject) {
return getSqlMapClientTemplate().update(sqlMapId, paramObject);
}
}