/**
* Query 接口是用于执行动态查询的主要接口之一,它允许开发者构建并执行对数据库执行的查询,以检索实体对象或标量结果
*/
public interface Query {
/**
* 执行带有SELECT语句的查询,获取多条结果
*/
List getResultList();
/**
* 执行带有SELECT语句的查询,获取多条结果,并组装成stream返回
*/
default Stream getResultStream() {
return getResultList().stream();
}
/**
* 执行带有SELECT语句的查询,获取唯一的结果
*/
Object getSingleResult();
/**
* 执行带有update或者delete的语句,返回受影响的记录行
*/
int executeUpdate();
/**
* 设置查询结果的最大记录数,分页时查询结果和总记录数,类似于sql的limit x,y中的y
*
* @param maxResult 最大查询的总记录数
* @return 需要设置的Query对象
*/
Query setMaxResults(int maxResult);
/**
* 获取设置的最大的查询结果数量
*/
int getMaxResults();
/**
* 设置查询结果中,第一条记录的位置
*
* @param startPosition 开始记录数的值,第一条记录开始值为0,类似于sql的limit x,y中的x
* @return
*/
Query setFirstResult(int startPosition);
/**
* 获取第一条结果的的位置
*/
int getFirstResult();
/**
* 设置JPA实现者的提示信息,可以对查询进行一些优化
*/
Query setHint(String hintName, Object value);
/**
* 获取设置的提示信息
*/
Map<String, Object> getHints();
/**
* 绑定参数
*/
<T> Query setParameter(Parameter<T> param, T value);
/**
* 绑定日期参数
*/
Query setParameter(Parameter<Calendar> param, Calendar value, TemporalType temporalType);
Query setParameter(Parameter<Date> param, Date value, TemporalType temporalType);
/**
* 按照名称绑定参数
*/
Query setParameter(String name, Calendar value, TemporalType temporalType);
Query setParameter(String name, Date value, TemporalType temporalType);
Query setParameter(String name, Object value);
/**
* 按照参数位置绑定
*/
Query setParameter(int position, Object value);
Query setParameter(int position, Calendar value, TemporalType temporalType);
Query setParameter(int position, Date value, TemporalType temporalType);
/**
* 获取绑定的所有参数
*/
Set<Parameter<?>> getParameters();
/**
* 获取绑定的指定名称的参数
*/
Parameter<?> getParameter(String name);
<T> Parameter<T> getParameter(String name, Class<T> type);
/**
* 获取指定位置的参数
*/
Parameter<?> getParameter(int position);
<T> Parameter<T> getParameter(int position, Class<T> type);
/**
* 当前参数是否被绑定
*/
boolean isBound(Parameter<?> param);
/**
* 获取参数值
*/
<T> T getParameterValue(Parameter<T> param);
/**
* 或者指定名称的参数值
*/
Object getParameterValue(String name);
/**
* 获取指定位置的参数值
*/
Object getParameterValue(int position);
/**
* 设置查询数据库时的提交方式
*/
Query setFlushMode(FlushModeType flushMode);
/**
* 获取查询数据库时的提交方式
*/
FlushModeType getFlushMode();
/**
* 设置操作实体的加锁类型
*/
Query setLockMode(LockModeType lockMode);
/**
* 获取操作实体的加锁类型
*/
LockModeType getLockMode();
/**
* 例如: 将Query对象转换为Hibernate的Query 接口
* org.hibernate.query.Query hibernateQuery = query.unwrap(org.hibernate.query.Query.class);
*/
<T> T unwrap(Class<T> cls);
}
JPA中,Query接口定义详解
于 2024-04-01 19:09:46 首次发布