package com.kym.service.mybatisplus;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.base.MPJBaseService;

import java.util.Collection;
import java.util.function.Function;


/**
 * 扩展mybatis-plus 实现指定字段更新
 *
 * @param <T>
 */
public interface MyBaseService<T> extends MPJBaseService<T> {
    public boolean updateBatchByQueryWrapper(Collection<T> entityList, Function<T, QueryWrapper<T>> queryWrapperFunction);

    public boolean updateByQueryWrapper(T entity, Function<T, QueryWrapper<T>> queryWrapperFunction);

    /**
     * 插入数据，如果中已经存在相同的记录，则忽略当前新数据
     */
    int insertIgnore(T entity);

    /**
     * 替换数据
     * replace into表示插入替换数据，需求表中有PrimaryKey，或者unique索引，如果数据库已经存在数据，则用新数据替换，如果没有数据效果则和insert into一样；
     */
    int replace(T entity);


    /**
     * 批量替换数据
     *
     * @param entityList
     * @return
     */
    boolean replaceBatch(Collection<T> entityList);

}
