都是单条单表数据进行导入使用的JdbcPagingItemReader<T>设置分页参数,就可以分页读取。现在导入数据需要维护层级关系,使用jdbc完全不可以满足关系
进而选择MyBatisPagingItemReader<T>, 使用mabatis维持层级关系,问题来了:当我设置分页参数为500的时候,返回的结果list是420,然后springBatch就没有继续往下读取了?
这个是修正后的xml 分页查询代码。必须保证left join 左边是500条 (不重复)订单记录
<select id="selectOrderAndOrderLine" resultMap="CommonResultMap">
select
temp_a.*,
sol.id as line_id,
sol.so_id as line_so_id,
sol.item_meal_name as line_item_meal_name,
sol.pic_path as line_pic_path,
sol.seller_nick as line_seller_nick ,
sol.buyer_nick as line_buyer_nick ,
sol.refund_status as line_refund_status ,
sol.outer_iid as line_outer_iid ,
sol.snapshot_url as line_snapshot_url ,
sol.snapshot as line_snapshot ,
sol.timeout_action_time as line_timeout_action_time ,
sol.buyer_rate as line_buyer_rate ,
sol.seller_rate as line_seller_rate ,
sol.seller_type as line_seller_type ,
sol.cid as line_cid ,
sol.sub_order_tax_fee as line_sub_order_tax_fee ,
sol.sub_order_tax_rate as line_sub_order_tax_rate ,
sol.oid as line_oid ,
sol.status as line_status ,
sol.title as line_title ,
sol.type as line_type ,
sol.iid as line_iid ,
sol.price as line_price ,
sol.num_iid as line_num_iid ,
sol.item_meal_id as line_item_meal_id ,
sol.sku_id as line_sku_id ,
sol.num as line_num ,
sol.outer_sku_id as line_outer_sku_id ,
sol.order_from as line_order_from ,
sol.total_fee as line_total_fee ,
sol.payment as line_payment ,
sol.discount_fee as line_discount_fee ,
sol.adjust_fee as line_adjust_fee ,
sol.modified as line_modified ,
sol.sku_properties_name as line_sku_properties_name ,
sol.refund_id as line_refund_id ,
sol.is_oversold as line_is_oversold ,
sol.is_service_order as line_is_service_order ,
sol.end_time as line_end_time ,
sol.consign_time as line_consign_time ,
sol.order_attr as line_order_attr ,
sol.shipping_type as line_shipping_type ,
sol.bind_oid as line_bind_oid ,
sol.logistics_company as line_logistics_company ,
sol.invoice_no as line_invoice_no ,
sol.is_daixiao as line_is_daixiao ,
sol.divide_order_fee as line_divide_order_fee ,
sol.part_mjz_discount as line_part_mjz_discount ,
sol.ticket_outer_id as line_ticket_outer_id ,
s
进而选择MyBatisPagingItemReader<T>, 使用mabatis维持层级关系,问题来了:当我设置分页参数为500的时候,返回的结果list是420,然后springBatch就没有继续往下读取了?
解决办法: 使用联合查询的时候,设置了分页参数是500,必须保证返回结果是500.当少于了500 batch会判定为最后一页,标记读取结束,程序读取就结束了
问题2:项目中会出现sql不报错(如果sql报错,会有日志打印,debug模式),但是springBatch查不出结果?最坑爹的日志也没有报错?
解决思路:这个原因很有可能是、resultMap中对应字段和实体中的对应字段不匹配。这个只能逐个检查了。(这个小问题坑了我好几个小时)
这个是修正后的xml 分页查询代码。必须保证left join 左边是500条 (不重复)订单记录
<select id="selectOrderAndOrderLine" resultMap="CommonResultMap">
select
temp_a.*,
sol.id as line_id,
sol.so_id as line_so_id,
sol.item_meal_name as line_item_meal_name,
sol.pic_path as line_pic_path,
sol.seller_nick as line_seller_nick ,
sol.buyer_nick as line_buyer_nick ,
sol.refund_status as line_refund_status ,
sol.outer_iid as line_outer_iid ,
sol.snapshot_url as line_snapshot_url ,
sol.snapshot as line_snapshot ,
sol.timeout_action_time as line_timeout_action_time ,
sol.buyer_rate as line_buyer_rate ,
sol.seller_rate as line_seller_rate ,
sol.seller_type as line_seller_type ,
sol.cid as line_cid ,
sol.sub_order_tax_fee as line_sub_order_tax_fee ,
sol.sub_order_tax_rate as line_sub_order_tax_rate ,
sol.oid as line_oid ,
sol.status as line_status ,
sol.title as line_title ,
sol.type as line_type ,
sol.iid as line_iid ,
sol.price as line_price ,
sol.num_iid as line_num_iid ,
sol.item_meal_id as line_item_meal_id ,
sol.sku_id as line_sku_id ,
sol.num as line_num ,
sol.outer_sku_id as line_outer_sku_id ,
sol.order_from as line_order_from ,
sol.total_fee as line_total_fee ,
sol.payment as line_payment ,
sol.discount_fee as line_discount_fee ,
sol.adjust_fee as line_adjust_fee ,
sol.modified as line_modified ,
sol.sku_properties_name as line_sku_properties_name ,
sol.refund_id as line_refund_id ,
sol.is_oversold as line_is_oversold ,
sol.is_service_order as line_is_service_order ,
sol.end_time as line_end_time ,
sol.consign_time as line_consign_time ,
sol.order_attr as line_order_attr ,
sol.shipping_type as line_shipping_type ,
sol.bind_oid as line_bind_oid ,
sol.logistics_company as line_logistics_company ,
sol.invoice_no as line_invoice_no ,
sol.is_daixiao as line_is_daixiao ,
sol.divide_order_fee as line_divide_order_fee ,
sol.part_mjz_discount as line_part_mjz_discount ,
sol.ticket_outer_id as line_ticket_outer_id ,
s