All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sf.r2dbc.mapper.R2dbcDaoMapper Maven / Gradle / Ivy

The newest version!
package sf.r2dbc.mapper;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import sf.core.DBObject;
import sf.r2dbc.dao.R2dbcClient;

import java.util.List;

/**
 * 通用mapper类
 * @param 
 */
public interface R2dbcDaoMapper {
    /**
     * 合并记录
     * @param entity
     * @return
     */
    Mono merge(T entity);

    /**
     * 通用插入,插入一个实体对象到数据库,返回主键
     * @param entity 实体类
     * @return 返回插入的数量
     */
    Mono insert(T entity);


    /**
     * 批量插入实体,返回主键
     * @param list
     * @return 返回插入的总数
     */
    Flux insertBatch(List list);

    /**
     * 批量插入实体,快速插入 不返回主键
     * @param list
     * @return 返回插入的总数
     */
    Flux insertBatchFast(List list);

    /**
     * 根据主键更新对象,对象set过才被更新
     * @param entity 实体
     * @return 返回变更的总数
     */
    Mono updateById(T entity);

    /**
     * 更新
     * @param entity
     * @return
     */
    Mono update(T entity);

    /**
     * 批量更新
     * @param list
     * @return
     */
    Flux updateBatch(List list);

    /**
     * 删除
     * @param entity
     * @return
     */
    Mono delete(T entity);

    /**
     * 根据主键删除对象,如果对象是复合主键,传入对象本生即可
     * @param key 主键
     * @return
     */
    Mono deleteById(Object... key);

    /**
     * 删除
     * @param entity
     * @return
     */
    Mono logicDelete(T entity);

    /**
     * 根据主键删除对象,如果对象是复合主键,传入对象本生即可
     * @param key 主键
     * @return
     */
    Mono logicDeleteById(Object... key);
    /**
     * 批量删除
     * @param entities
     * @return
     */
    Flux deleteInBatch(Iterable entities);

    /**
     * 清空表
     */
    Mono deleteAllInBatch();

    /**
     * 根据主键获取对象,如果对象不存在,返回null
     * @param keys
     * @return
     */
    Mono unique(Object... keys);

    /**
     * 获取单一对象,如果对象不存在,返回null
     * @param query
     * @return
     */
    Mono single(T query);

    /**
     * 获取单一对象,如果在事物中执行会添加数据库行级锁(select * from table where id = ? for
     * update),如果对象不存在,返回null
     * @param query
     * @return
     */
    Mono lock(T query);

    /**
     * 返回实体在数据库里的总数
     * @return
     */
    Mono count();

    /**
     * 根据条件查询数量
     * @param query
     * @return
     */
    Mono count(T query);

    /**
     * 是否存在,根据主键查询
     * @param id
     * @return
     */
    Mono existsById(Object... id);

    /**
     * 是否存在,根据对象查询
     * @param query
     * @return
     */
    Mono exists(T query);

    /**
     * 返回实体对应的所有数据库记录
     * @return
     */
    Flux selectList(T query);

    /**
     * @return
     */
    R2dbcClient getR2dbcClient();

    /**
     * @return
     */
    Class getDomainClass();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy