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

com.github.yaoguoh.common.jpa.support.IService Maven / Gradle / Ivy

There is a newer version: 2.7.0
Show newest version
package com.github.yaoguoh.common.jpa.support;

import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 通用接口
 *
 * @param   the type parameter
 * @param  the type parameter
 * @author WYG
 */
public interface IService {

    /**
     * 根据主键字段进行查询, 方法参数必须包含完整的主键属性, 查询条件使用等号
     *
     * @param id the id
     * @return the t
     */
    T findById(ID id);

    /**
     * 根据实体中的属性进行查询, 只能有一个返回值, 有多个结果是抛出异常, 查询条件使用等号
     *
     * @param example the example
     * @return the t
     */
    T findOneByExample(Example example);

    /**
     * 查询全部结果, findAll()方法能达到同样的效果
     *
     * @return the list
     */
    List findAll();

    /**
     * 根据实体中的属性值进行查询, 查询条件使用等号
     *
     * @param example the example
     * @return the list
     */
    List findAllByExample(Example example);

    /**
     * 根据实体ID集合进行查询
     *
     * @param list the list
     * @return the list
     */
    List findAllByIdList(List list);

    /**
     * 查询总数
     *
     * @return the int
     */
    Long findCount();

    /**
     * 根据实体中的属性查询总数, 查询条件使用等号
     *
     * @param example the example
     * @return the int
     */
    Long findCountByExample(Example example);

    /**
     * 保存一个实体, null的属性不会保存, 会使用数据库默认值
     *
     * @param domain the domain
     * @return the int
     */
    @Transactional(rollbackFor = Exception.class)
    T save(T domain);

    /**
     * 批量保存  @param list the list
     *
     * @param list the list
     * @return the int
     */
    @Transactional(rollbackFor = Exception.class)
    List batchSave(List list);

    /**
     * 根据主键更新属性不为null的值  @param entity the entity
     *
     * @param domain the domain
     * @return the int
     */
    @Transactional(rollbackFor = Exception.class)
    T update(T domain);

    /**
     * 根据实体属性作为条件进行删除, 查询条件使用等号  @param domain the domain
     *
     * @param domain the domain
     */
    @Transactional(rollbackFor = Exception.class)
    void delete(T domain);

    /**
     * 批量删除  @param list the list
     *
     * @param list the list
     */
    @Transactional(rollbackFor = Exception.class)
    void batchDelete(List list);

    /**
     * 根据主键字段进行删除, 方法参数必须包含完整的主键属性
     *
     * @param id the id
     */
    @Transactional(rollbackFor = Exception.class)
    void deleteById(ID id);

    /**
     * 根据主键字段进行删除, 方法参数必须包含完整的主键属性
     *
     * @param idList the id list
     */
    @Transactional(rollbackFor = Exception.class)
    void deleteByIdList(List idList);


    /**
     * 根据Pageable进行分页查询
     *
     * @param pageable the pageable
     * @return the page
     */
    Page findAllByPageable(Pageable pageable);

    /**
     * 根据实体属性和Pageable进行分页查询
     *
     * @param example  the example
     * @param pageable the pageable
     * @return the page
     */
    Page findAllByExampleAndPageable(Example example, Pageable pageable);

    /**
     * Find all by example like and pageable page. 通过实体属性模糊查询(分页)
     *
     * @param domain   the domain
     * @param pageable the pageable
     * @return the page
     */
    Page findAllByExampleLikeAndPageable(T domain, Pageable pageable);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy