io.github.dengchen2020.jdbc.base.BaseJdbcRepository Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dc-spring-boot-starter-jdbc Show documentation
Show all versions of dc-spring-boot-starter-jdbc Show documentation
jdbc扩展,基于spring-boot-starter-data-jdbc实现,提供CRUD通用操作,分页,内外连接查询,支持jpa注解,乐观锁,数据填充等功能
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 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
*/
@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