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

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

Go to download

jdbc扩展,基于spring-boot-starter-data-jdbc实现,提供CRUD通用操作,分页,内外连接查询,支持jpa注解,乐观锁,数据填充等功能

There is a newer version: 0.0.30
Show newest version
package io.github.dengchen2020.jdbc.base;

import io.github.dengchen2020.core.support.model.PageParam;
import org.apache.commons.collections4.IterableUtils;
import org.springframework.data.relational.core.sql.LockMode;
import org.springframework.data.relational.repository.Lock;
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.Collection;
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 {

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

    /**
     * 软删除- 支持批量 set deleted = 1
     *
     * @param id id
     * @return 受影响的行数
     */
    default int softDelete(@NonNull Serializable id) {
        return softDelete(List.of(id));
    }

    /**
     * 删除-支持批量
     *
     * @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
     */
    @Transactional
    T selectByIdForUpdate(Serializable id);

    /**
     * findById 加锁版本
     *
     * @param id id
     * @return Optional
     */
    @Transactional
    default Optional findByIdForUpdate(Serializable id){
        return Optional.ofNullable(selectByIdForUpdate(id));
    }

    /**
     * 根据id查询
     *
     * @param id id
     * @return Optional
     */
    @NonNull
    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
     */
    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