rowhandler的用法

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);

 

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值