JPA中,Query接口定义详解

/**
 * 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);
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值