cn.cliveyuan.robin.base.BaseService Maven / Gradle / Ivy
/*
* Copyright (c) 2020 Clive Yuan ([email protected]).
*/
package cn.cliveyuan.robin.base;
import cn.cliveyuan.robin.base.condition.PageQueryExample;
import cn.cliveyuan.robin.base.condition.Query;
import cn.cliveyuan.robin.base.common.Pagination;
import java.util.List;
/**
* 基础 Service
*
* @author Clive Yuan
* @date 2020/10/29
*/
public interface BaseService {
/**
* 选择性插入
*
* 仅插入非null字段
*
* @param entity 实体
* @return 影响行数
*/
int insert(T entity);
/**
* 全字段插入
*
* 无论是否为null均进行插入
*
* @param entity 实体
* @return 影响行数
*/
int insertAll(T entity);
/**
* 选择性插入且忽略错误
*
* 仅插入非null字段
*
* @param entity 实体
* @return
*/
int insertIgnore(T entity);
/**
* 选择性保存
*
entity.id = null -> 插入
* entity.id != null -> 更新
*
* @param entity 实体
* @return 影响行数
*/
int save(T entity);
/**
* 全字段保存
* entity.id = null -> 插入
* entity.id != null -> 更新
*
* @param entity 实体
* @return 影响行数
*/
int saveAll(T entity);
/**
* 批量选择性插入
*
* @param list 实体列表
* @return 影响行数
*/
int batchInsert(List list);
/**
* 批量选择性插入且忽略错误
*
* @param list 实体列表
* @return
*/
int batchInsertIgnore(List list);
/**
* 根据ID删除
*
* @param id 主键ID
* @return 影响行数
*/
int delete(Long id);
/**
* 批量ID删除
*
* @param ids ID列表
* @return 影响行数
*/
int batchDelete(List ids);
/**
* 根据条件删除
*
* @return 影响行数
*/
int deleteByExample(Query query);
/**
* 选择性更新
*
* 仅更新非null字段
*
* @param entity 实体
* @return 影响行数
*/
int update(T entity);
/**
* 全字段更新
*
* 无论是否为null均进行更新
*
* @param entity 实体
* @return 影响行数
*/
int updateAll(T entity);
/**
* 根据条件选择性更新
*
* @param entity 实体 (set)
* @param query 查询条件 (where)
* @return 影响行数
*/
int updateByExample(T entity, Query query);
/**
* 根据条件更新全字段
*
* @param entity 实体 (set)
* @param query 查询条件 (where)
* @return 影响行数
*/
int updateByExampleAll(T entity, Query query);
/**
* 根据ID获取实体
*
* @param id 主键ID
* @return 实体对象
*/
T get(Long id);
/**
* 批量获取实体
*
* @param ids ID列表
* @return 实体列表
*/
List batchGet(List ids);
/**
* 根据条件获取实体
*
* 多个时仅返回ID倒序排序首个
*
* @param query 查询条件
* @return 实体对象
*/
T getByExample(Query query);
/**
* 根据条件数量查询
*
* @param query 查询条件
* @return 条数
*/
int count(Query query);
/**
* 根据条件列表查询
*
* @param query 查询条件
* @return 实体列表
*/
List list(Query query);
/**
* 分页查询
*
* @param query 查询条件
* @return 实体分页
*/
Pagination page(PageQueryExample query);
}