io.github.dengchen2020.jdbc.base.ComplexJdbcRepository 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 com.querydsl.core.Tuple;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.Predicate;
import com.querydsl.sql.RelationalPath;
import com.querydsl.sql.SQLQuery;
import com.querydsl.sql.dml.SQLDeleteClause;
import com.querydsl.sql.dml.SQLUpdateClause;
import io.github.dengchen2020.core.support.model.PageParam;
import io.github.dengchen2020.core.support.model.SimplePage;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
/**
* 复杂Jdbc基础接口
* @author dengchen
* @since 2024/6/18
*/
@Transactional(propagation = Propagation.SUPPORTS)
@NoRepositoryBean
public interface ComplexJdbcRepository extends CrudRepository {
/**
* 最基础的查询构造器
* @return SQLQuery>
*/
SQLQuery> query();
/**
* 单表查询构造
* @param expr querydsl查询Q类对象
* @return SQLQuery
*/
SQLQuery select(Expression expr);
/**
* 单表查询构造
* @param exprs querydsl查询Q类对象
* @return SQLQuery
*/
SQLQuery select(Expression>... exprs);
/**
* 去重查询
* @param expr 条件
* @return SQLQuery
*/
SQLQuery selectDistinct(Expression expr);
/**
* 去重查询
* @param exprs 条件
* @return SQLQuery
*/
SQLQuery selectDistinct(Expression>... exprs);
/**
* select 0
* @return SQLQuery
*/
SQLQuery selectZero();
/**
* select 1
* @return SQLQuery
*/
SQLQuery selectOne();
/**
* 按条件查询单条数据
* @param predicate 条件
* @return Optional
*/
Optional findOne(Predicate predicate);
/**
* 按条件查询
* @param predicate 查询条件
* @return Iterable
*/
List findAll(Predicate predicate);
/**
* 按条件筛选查询全部
* @param predicate 查询条件
* @param orders 排序方式
* @return Iterable
*/
List findAll(Predicate predicate, OrderSpecifier>... orders);
/**
* 按条件筛选查询全部
* @param orders 排序方式
* @return Iterable
*/
List findAll(OrderSpecifier>... orders);
/**
* 统计数量
* @param predicate 查询条件
* @return 数量
*/
long count(Predicate predicate);
/**
* 是否存在
* @param predicate 查询条件
* @return true or false
*/
boolean exists(Predicate predicate);
/**
* 单表查询构造
* @param expr querydsl查询Q类对象
* @return SQLQuery
*/
SQLQuery selectFrom(RelationalPath expr);
/**
* 更新构造
*
* @param path querydsl查询Q类对象
* @param where 更新条件
* @return SQLUpdateClause
*/
SQLUpdateClause update(RelationalPath> path, Predicate[] where);
/**
* 更新构造
*
* @param path querydsl查询Q类对象
* @param where 更新条件
* @return SQLUpdateClause
*/
SQLUpdateClause update(RelationalPath> path, Predicate where);
/**
* 删除构造
*
* @param path querydsl查询Q类对象
* @param where 更新条件
* @return SQLDeleteClause
*/
SQLDeleteClause delete(RelationalPath> path, Predicate[] where);
/**
* 删除构造
*
* @param path querydsl查询Q类对象
* @param where 更新条件
* @return SQLDeleteClause
*/
SQLDeleteClause delete(RelationalPath> path, Predicate where);
/**
* 统一查询,支持分页
* @param param 查询参数
* @return SQLQuery extends T>
*/
SQLQuery extends T> findAllQuery(P param);
/**
* Querydsl分页条件查询
*
* @param param 分页参数
* @param o 排序方式
* @return 分页后的数据
*/
default SimplePage extends T> findAll(P param, OrderSpecifier>... o) {
SQLQuery extends T> query = findAllQuery(param);
return pageList(query, param, o);
}
/**
* Querydsl分页查询
* @param query SQLQuery
* @param param 分页参数
* @param o 排序方式
* @return SimplePage
*/
SimplePage pageList(SQLQuery query, PageParam param, OrderSpecifier>... o);
/**
* Querydsl分页条件查询
*
* @param param 分页参数
* @param o 排序方式
* @return 分页后的数据
*/
SimplePage findAll(Predicate predicate, PageParam param, OrderSpecifier>... o);
/**
* 返回流读取器
* @param query SQLQuery
* @param param 查询参数
* @param o 排序方式
* @return Stream
*/
Stream streamList(SQLQuery query, PageParam param, OrderSpecifier>... o);
/**
* 返回流读取器
* @param predicate 条件
* @param param 查询参数
* @param o 排序方式
* @return Stream
*/
Stream findStream(Predicate predicate, PageParam param, OrderSpecifier>... o);
/**
* 返回流读取器
* @param param 查询参数
* @param o 排序方式
* @return Stream
*/
Stream findStream(PageParam param, OrderSpecifier>... o);
/**
* 返回流读取器
* @param o 排序方式
* @return Stream
*/
Stream findStream(OrderSpecifier>... o);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy