001package com.mybatisflex.spring.batch.builder;
002
003import com.mybatisflex.core.BaseMapper;
004import com.mybatisflex.core.query.QueryWrapper;
005import com.mybatisflex.spring.batch.MybatisFlexPagingItemReader;
006
007import java.util.Optional;
008
009/**
010 * MybatisFlexPagingItemReader  构造工具
011 * @author zhangjian
012 * @param <T>
013 */
014public class MyBatisFlexPagingItemReaderBuilder<T> {
015
016  /**
017   * mapper对象
018   */
019  private BaseMapper<T> mapper;
020
021  /**
022   * 查询条件对象
023   */
024  private QueryWrapper queryWrapper;
025
026  /**
027   * 分页大小
028   */
029  private Integer pageSize;
030
031  /**
032   * 保存状态标志位
033   */
034  private Boolean saveState;
035
036  /**
037   *  数据最大读取数量
038   */
039  private Integer maxItemCount;
040
041  /**
042   * 设置mapper
043   * @param mapper
044   * @return
045   */
046  public MyBatisFlexPagingItemReaderBuilder<T> mapper(BaseMapper<T> mapper) {
047    this.mapper = mapper;
048    return this;
049  }
050
051  /**
052   * 设置查询条件
053   * @param queryWrapper
054   * @return
055   */
056  public MyBatisFlexPagingItemReaderBuilder<T> queryWrapper(QueryWrapper queryWrapper) {
057    this.queryWrapper = queryWrapper;
058    return this;
059  }
060
061  /**
062   * 分页大小
063   * @param pageSize
064   * @return
065   */
066  public MyBatisFlexPagingItemReaderBuilder<T> pageSize(int pageSize) {
067    this.pageSize = pageSize;
068    return this;
069  }
070
071  /**
072   * 是否更新状态标志位
073   * @param saveState
074   * @return
075   */
076  public MyBatisFlexPagingItemReaderBuilder<T> saveState(boolean saveState) {
077    this.saveState = saveState;
078    return this;
079  }
080
081  /**
082   * Configure the max number of items to be read.
083   * default Integer.Max_Value
084   * @param maxItemCount
085   * @return
086   */
087  public MyBatisFlexPagingItemReaderBuilder<T> maxItemCount(int maxItemCount) {
088    this.maxItemCount = maxItemCount;
089    return this;
090  }
091
092  /**
093   * Returns a fully built {@link MybatisFlexPagingItemReader}.
094   *
095   * @return the reader
096   */
097  public MybatisFlexPagingItemReader<T> build() {
098    MybatisFlexPagingItemReader<T> reader = new MybatisFlexPagingItemReader<>();
099    reader.setMapper(this.mapper);
100    reader.setQueryWrapper(this.queryWrapper);
101    Optional.ofNullable(this.pageSize).ifPresent(reader::setPageSize);
102    Optional.ofNullable(this.saveState).ifPresent(reader::setSaveState);
103    Optional.ofNullable(this.maxItemCount).ifPresent(reader::setMaxItemCount);
104    return reader;
105  }
106
107}