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

io.github.dengchen2020.jdbc.base.BaseJdbcRepository Maven / Gradle / Ivy

package io.github.dengchen2020.jdbc.base;

import io.github.dengchen2020.core.support.model.PageParam;
import org.apache.commons.collections4.IterableUtils;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.lang.NonNull;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.io.Serializable;
import java.util.List;
import java.util.Optional;

/**
 * JDBC-Repository基类接口
 *
 * @author dengchen
 * @since 2024/6/16
 */
@Transactional(propagation = Propagation.SUPPORTS)
@NoRepositoryBean
public interface BaseJdbcRepository extends ComplexJdbcRepository {

    /**
     * 删除-支持批量
     *
     * @param ids id集合
     * @return 受影响的行数
     */
     int delete(@NonNull Iterable ids);

    /**
     * 删除
     *
     * @param id id
     * @return 受影响的行数
     */
    default int delete(@NonNull Serializable id) {
        delete(List.of(id));
        return 1;
    }

    /**
     * selectById 加锁版本
     *
     * @param id id
     * @return T
     */
    @NonNull
    @Transactional
    T selectByIdForUpdate(@NonNull Serializable id);

    /**
     * findById 加锁版本
     *
     * @param id id
     * @return Optional
     */
    @NonNull
    @Transactional
    Optional findByIdForUpdate(@NonNull Serializable id);

    /**
     * 根据id查询
     *
     * @param id id
     * @return Optional
     */
    @NonNull
    @Override
    Optional findById(@NonNull Serializable id);

    /**
     * 根据id查询
     *
     * @param id id
     * @return T
     */
    default T selectById(Serializable id) {
        return findById(id).orElse(null);
    }

    /**
     * 根据id集合查询
     *
     * @param ids id集合
     * @return List
     */
    @NonNull
    @Override
    Iterable findAllById(@NonNull Iterable ids);

    /**
     * 根据id集合查询
     *
     * @param ids id集合
     * @return List
     */
    default List selectInIds(Iterable ids) {
        Iterable iterable = findAllById(ids);
        if (iterable instanceof List list) {
            return list;
        }
        return IterableUtils.toList(iterable);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy