public List<MLProductDO> findAllProductMapping(int count) {
final List<MLProductDO> result=new ArrayList<MLProductDO>();
int batchSize = count;
List<Object> _data = new ArrayList<Object>(batchSize);
getSqlMapClientTemplate().queryWithRowHandler("ML_PRODUCT_MAPPING.findAllProductMapping", new SimpleBatchRowHandler(batchSize, _data) {
@Override
protected void doHandle(List<Object> data) {
for(Object object:data){
MLProductMappingDO mlProductMappingDO=(MLProductMappingDO)object;
MLProductQuery mlProductQuery=new MLProductQuery();
List<Long> idList=new ArrayList<Long>();
idList.add(mlProductMappingDO.getId());
mlProductQuery.setIdList(idList);
mlProductQuery.setVaccountId(mlProductMappingDO.getVaccountId());
List<MLProductDO> mlProductDOList=mlProductDao.listByQuery(mlProductQuery);
List<MLProductDetailDO> mlProductDetailDOList=mlProductDetailDao.listByIdList(mlProductMappingDO.getVaccountId(),idList);
List<MLProductManageDO> mlProductManageDOList=mlProductManageDao.listByIdList(mlProductMappingDO.getVaccountId(),idList);
if(mlProductDOList.size()>0){
MLProductDO mlProductDO=mlProductDOList.get(0);
if(mlProductDetailDOList.size()>0){
mlProductDO.setDetailDO(mlProductDetailDOList.get(0));
}
if(mlProductManageDOList.size()>0){
mlProductDO.setManageDO(mlProductManageDOList.get(0));
}
result.add(mlProductDO);
}
}
}
});
return result;
}
import com.ibatis.sqlmap.client.event.RowHandler;
/**
* 类SimpleBatchRowHandler.java的实现描述:TODO 类实现描述
* @author wb_jing.xiongj 2013-9-10 下午03:16:01
*/
public abstract class SimpleBatchRowHandler implements RowHandler {
public SimpleBatchRowHandler(int batchSize, List<Object> data) {
logger.info("a new batch-task created, size:- " + batchSize);
this.batchSize = batchSize;
_data = data;
}
public void handleRow(Object o) {
_data.add(o);
if (_data.size() >= batchSize) {
doHandle(new ArrayList<Object>(_data));
_data.clear();
}
}
/**
* invoked every ${batchSize} objects collected
*
* @param data
*/
protected abstract void doHandle(List<Object> data);
private List<Object> _data;
private int batchSize;
private static final Log logger = LogFactory.getLog(SimpleBatchRowHandler.class);
}