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}