关于Class MyBatisPagingItemReader<T> 读取数据只读第一条分页数据就结束了问题

在使用MyBatis和SpringBatch时,遇到Class MyBatisPagingItemReader只读取第一条分页数据即结束的问题。问题源于分页设置为500条,但查询结果不足500条导致SpringBatch认为已到末页。此外,当SQL无误且日志无报错时,SpringBatch无法获取数据可能是因为resultMap中的字段与实体字段不匹配,需逐一检查以排查问题。
摘要由CSDN通过智能技术生成
都是单条单表数据进行导入使用的JdbcPagingItemReader<T>设置分页参数,就可以分页读取。现在导入数据需要维护层级关系,使用jdbc完全不可以满足关系
进而选择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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值