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 extends Serializable> 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);
}
}