001package com.mybatisflex.spring.batch.builder; 002 003import com.mybatisflex.spring.batch.MyBatisFlexCursorItemReader; 004import com.mybatisflex.core.BaseMapper; 005import com.mybatisflex.core.query.QueryWrapper; 006import org.mybatis.spring.batch.MyBatisCursorItemReader; 007 008import java.util.Optional; 009 010/** 011 * MyBatisCursorItemReader 构造工具 012 * @author zhangjian 013 * @param <T> 014 */ 015public class MyBatisFlexCursorItemReaderBuilder<T> { 016 017 /** 018 * mapper对象 019 */ 020 private BaseMapper<T> mapper; 021 022 /** 023 * 查询条件对象 024 */ 025 private QueryWrapper queryWrapper; 026 027 private Boolean saveState; 028 029 /** 030 * 最大读取行数 031 */ 032 private Integer maxItemCount; 033 034 /** 035 * 设置mapper对象 036 * @param mapper 037 * @return 038 */ 039 public MyBatisFlexCursorItemReaderBuilder<T> mapper(BaseMapper<T> mapper) { 040 this.mapper = mapper; 041 return this; 042 } 043 044 /** 045 * 设置查询条件 046 * @param queryWrapper 047 * @return 048 */ 049 public MyBatisFlexCursorItemReaderBuilder<T> queryWrapper(QueryWrapper queryWrapper) { 050 this.queryWrapper = queryWrapper; 051 return this; 052 } 053 054 /** 055 * 保存状态标志位 056 * @param saveState 057 * @return 058 */ 059 public MyBatisFlexCursorItemReaderBuilder<T> saveState(boolean saveState) { 060 this.saveState = saveState; 061 return this; 062 } 063 064 /** 065 * 数据读取最大行数 066 * @param maxItemCount 067 * @return 068 */ 069 public MyBatisFlexCursorItemReaderBuilder<T> maxItemCount(int maxItemCount) { 070 this.maxItemCount = maxItemCount; 071 return this; 072 } 073 074 /** 075 * Returns a fully built {@link MyBatisFlexCursorItemReader}. 076 * 077 * @return the reader 078 */ 079 public MyBatisFlexCursorItemReader<T> build() { 080 MyBatisFlexCursorItemReader<T> reader = new MyBatisFlexCursorItemReader<>(); 081 reader.setMapper(this.mapper); 082 reader.setQueryWrapper(this.queryWrapper); 083 Optional.ofNullable(this.saveState).ifPresent(reader::setSaveState); 084 Optional.ofNullable(this.maxItemCount).ifPresent(reader::setMaxItemCount); 085 return reader; 086 } 087 088}