package org.dayatang.querychannel; import org.dayatang.utils.Page; import java.io.Serializable; import java.util.List; /** * 查询通道接口。可以针对仓储进行分页查询。 */ public interface QueryChannelService extends Serializable { /** * 创建JPQL查询 * * @param jpql JPQL语句 * @return 一个JPQL查询 */ ChannelQuery createJpqlQuery(String jpql); /** * 创建命名查询 * * @param queryName 命名查询的名字 * @return 一个命名查询 */ ChannelQuery createNamedQuery(String queryName); /** * 创建原生SQL查询 * * @param sql SQL语句 * @return 一个原生SQL查询 */ ChannelQuery createSqlQuery(String sql); /** * 执行查询,返回符合条件的结果列表 * * @param query 要执行的查询 * @param <T> 返回结果元素类型 * @return 符合查询条件的结果列表 */ <T> List<T> list(ChannelQuery query); /** * 执行查询,分页返回符合条件的结果列表 * * @param query 要执行的查询 * @param <T> 返回结果元素类型 * @return 符合查询条件的结果页 */ <T> Page<T> pagedList(ChannelQuery query); /** * 执行查询,返回符合条件的单个实体 * * @param query 要执行的查询 * @param <T> 返回结果类型 * @return 符合查询条件的单个结果 */ <T> T getSingleResult(ChannelQuery query); /** * 获取查询结果的总数。 * * @param query 要执行的查询 * @return 符合查询条件的结果的总数 */ long getResultCount(ChannelQuery query); }