package com.njcn.oracle.mybatis.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.oracle.bo.param.MigrationParam;

import java.util.List;

/**
 * @author hongawen
 * @version 1.0.0
 * @date 2023年06月06日 18:14
 */
public interface IReplenishMybatisService<T> extends IService<T> {


    /***
     * 当批量插入数据量过大时，可以指定尺寸交给mybatis,每次插入多少条记录
     * @author hongawen
     * @date 2023/6/6 9:33
     * @param data 数据集合
     * @param size 分片的尺寸
     */
    void insertBatchBySlice(List<T> data, int size);


    /***
     * 指定数据库
     * @param data 数据集合
     */
    void insertBatchByDB(List<T> data);

    /**
     * 查询源数据库内条件范围内的所有数据
     * @param migrationParam 查询条件
     */
    List<T> queryData(MigrationParam migrationParam);

    /**
     * 清除目标库中遗留的数据，避免插入时提示索引唯一性冲突
     * @param migrationParam 查询条件
     */
    void clearTargetData(MigrationParam migrationParam);
}
