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

com.itxiaoer.commons.orm.service.BasicService Maven / Gradle / Ivy

package com.itxiaoer.commons.orm.service;


import com.itxiaoer.commons.core.beans.ProcessUtils;
import com.itxiaoer.commons.core.page.PageResponse;
import com.itxiaoer.commons.core.page.Paging;
import com.itxiaoer.commons.core.page.Sort;

import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

/**
 * @author : liuyk
 */
@SuppressWarnings("unused")
public interface BasicService {

    /**
     * 创建对象
     *
     * @param dto dto
     * @return id
     */
    E create(DTO dto);


    /**
     * 创建对象
     *
     * @param dto      dto
     * @param consumer 对象转换器
     * @return id
     */
    E create(DTO dto, BiConsumer consumer);


    /**
     * 更新对象
     *
     * @param id  id
     * @param dto dto对象
     * @return 更新后的对象
     */
    E update(ID id, DTO dto);


    /**
     * 更新对象
     *
     * @param id       id
     * @param consumer 消费方法
     * @return 更新后的对象
     */
    E update(ID id, Consumer consumer);


    /**
     * 更新对象
     *
     * @param id       id
     * @param dto      dto对象
     * @param consumer 对象转换器
     * @return 更新后的对象
     */
    E update(ID id, DTO dto, BiConsumer consumer);


    /**
     * 通过id删除对象
     *
     * @param id id
     */
    void delete(ID id);

    /**
     * 通过id删除对象(批量)
     *
     * @param ids ids
     */
    void delete(List ids);


    /**
     * 通过id查询对象
     *
     * @param id id
     * @return e
     */
    Optional getById(ID id);

    /**
     * 通过id查询对象(批量)
     *
     * @param ids ids
     * @return list
     */
    List getById(List ids);

    /**
     * 查询所有的对象
     *
     * @return list
     */
    List list();

    /**
     * 查询所有的对象
     *
     * @param sorts 排序规则
     * @return list
     */
    List list(Sort... sorts);

    /**
     * 查询所有的对象
     *
     * @param query 多条件查询对象
     * @param    任意查询对象
     * @return list
     */
     List listByWhere(T query);


    /**
     * 查询所有的对象
     *
     * @param query 多条件查询对象
     * @param sorts 排序对象
     * @param    任意查询对象
     * @return list
     */
     List listByWhere(T query, Sort... sorts);

    /**
     * 查询所有的对象
     *
     * @param query 多条件查询对象
     * @param    paging
     * @return list
     */
     PageResponse listByWhere(T query);

    /**
     * 查询所有的对象(分页)
     *
     * @param paging 分页对象
     * @return list
     */
    PageResponse list(Paging paging);


    /**
     * dto convert to e
     *
     * @param dto dto
     * @return e
     */
    default E process(DTO dto) {
        return process(dto, consumer());
    }

    /**
     * dto convert to e
     *
     * @param dto      dto
     * @param consumer process
     * @return e
     */

    default E process(DTO dto, BiConsumer consumer) {
        Class clazz = this.getGenericClass(1);
        return ProcessUtils.process(clazz, dto, consumer);
    }


    /**
     * 转换对象
     *
     * @param e        目标对象
     * @param dto      原对象
     * @param consumer 额外转换器
     */
    default void process(E e, DTO dto, BiConsumer consumer) {
        ProcessUtils.processObject(e, dto, consumer);
    }

    /**
     * 创建对象转换器(只能用于新增)
     *
     * @return 返回对象转换器
     */
    default BiConsumer consumer() {
        return (dest, source) -> {
        };
    }

    /**
     * get class
     *
     * @param index index
     * @return class
     */
    @SuppressWarnings("unchecked")
    default Class getGenericClass(int index) {
        ParameterizedType genericInterfaces = (ParameterizedType) this.getClass().getGenericSuperclass();
        return (Class) genericInterfaces.getActualTypeArguments()[index];
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy