インタフェース AutoSelect<T>

  • 型パラメータ:
    T - 処理対象となるエンティティの型
    既知の実装クラスのリスト:
    AutoSelectImpl

    public interface AutoSelect<T>
    抽出を行うSQLを自動生成するクエリです。
    バージョン:
    0.3
    作成者:
    T.TSUCHIE
    • メソッドの詳細

      • queryTimeout

        AutoSelect<T> queryTimeout​(int seconds)
        クエリタイムアウトの秒数を設定します。

        -1 を指定するとJDBC ドライバーのデフォルト値を使用します。

        パラメータ:
        seconds - クエリタイムアウトの秒数
        戻り値:
        自身のインスタンス。
        導入されたバージョン:
        0.3
      • fetchSize

        AutoSelect<T> fetchSize​(int fetchSize)
        フェッチ数を設定します。

        これをデフォルト値よりも高く設定すると、大きな結果セットを処理する際に、メモリ消費を犠牲にして処理速度が向上します。

        -1 を指定するとJDBC ドライバーのデフォルト値を使用します。

        パラメータ:
        fetchSize - フェッチ数
        戻り値:
        自身のインスタンス。
        導入されたバージョン:
        0.3
      • maxRows

        AutoSelect<T> maxRows​(int maxRows)
        最大行数を設定します。

        JDBCのStatementレベルで、結果セットのオブジェクトが含むことのできる最大行数を制限します。
        制限値を超えた場合は通知なしの除外されます。

        RDMSでLIMIT句がサポートされていない場合に使用します。
        LIMIT句がサポートされている場合は、limit(int) を使用します。

        -1 を指定するとJDBC ドライバーのデフォルト値を使用します。

        パラメータ:
        maxRows - 最大行数
        戻り値:
        自身のインスタンス。
        導入されたバージョン:
        0.3
      • hint

        AutoSelect<T> hint​(String hint)
        ヒントを設定します。
        パラメータ:
        hint - ヒント
        戻り値:
        このインスタンス自身
      • limit

        AutoSelect<T> limit​(int limit)
        抽出する行数を指定します。
        パラメータ:
        limit - 行数
        戻り値:
        このインスタンス自身
      • offset

        AutoSelect<T> offset​(int offset)
        抽出するデータの開始位置を指定します。
        パラメータ:
        offset - 開始位置。0から始まります。
        戻り値:
        このインスタンス自身
      • includes

        AutoSelect<T> includes​(PropertyPath<?>... properties)
        指定のプロパティのみを抽出対象とします。

        ID(主キー)の場合は、必ず抽出対象となります。

        excludes(PropertyPath...) と同時に指定した場合、includes(PropertyPath...)が優先されます。

        パラメータ:
        properties - 挿入対象のプロパティ情報。
        戻り値:
        自身のインスタンス。
        例外:
        IllegalOperateException - エンティティに存在しないプロパティ名を指定した場合にスローされます。
      • excludes

        AutoSelect<T> excludes​(PropertyPath<?>... properties)
        指定のプロパティを抽出対象から除外します。

        ID(主キー)の場合は、必ず抽出対象となります。

        includes(PropertyPath...) と同時に指定した場合、includes(PropertyPath...)が優先されます。

        パラメータ:
        properties - 除外対象のプロパティ情報。
        戻り値:
        自身のインスタンス。
      • innerJoin

        <ENTITY extends EntityPath<?>> AutoSelect<T> innerJoin​(ENTITY toEntityPath,
                                                               JoinCondition.Conditioner<ENTITY> conditioner)
        FROM句で指定したテーブルと内部結合(INNERT JOIN)する条件を指定します。
        型パラメータ:
        ENTITY - 結合先のテーブルのエンティティタイプ
        パラメータ:
        toEntityPath - 結合先テーブルのエンティティ情報
        conditioner - 結合条件の組み立て
        戻り値:
        自身のインスタンス
      • leftJoin

        <ENTITY extends EntityPath<?>> AutoSelect<T> leftJoin​(ENTITY toEntityPath,
                                                              JoinCondition.Conditioner<ENTITY> conditioner)
        FROM句で指定したテーブルと左外部結合(LEFT OUTER JOIN)する条件を指定します。
        型パラメータ:
        ENTITY - 結合先のテーブルのエンティティタイプ
        パラメータ:
        toEntityPath - 結合先テーブルのエンティティ情報
        conditioner - 結合条件の組み立て
        戻り値:
        自身のインスタンス
        例外:
        IllegalOperateException - 既に同じ組み合わせのエンティティ(テーブル)を指定しているときにスローされます。
      • associate

        <E1,​E2> AutoSelect<T> associate​(EntityPath<E1> entityPath1,
                                              EntityPath<E2> entityPath2,
                                              JoinAssociation.Associator<E1,​E2> associator)
        テーブル結合の際に複数のテーブルのエンティティの構成定義を指定します。

        OUTER JOINで関連先が存在しない場合も、各プロパティがnullの値が設定さたエンティティのインスタンスが渡されるため、主キーなどで判定して除外します。
        例 : associate(c_, a_, (e1, e2) -> Optional.ofNullable(e2.getCustomerId()).ifPresent(c -> e1.setAddress(e2)))

        型パラメータ:
        E1 - エンティティタイプ1
        E2 - エンティティタイプ2
        パラメータ:
        entityPath1 - エンティティ情報1
        entityPath2 - エンティティ情報2
        associator - エンティティの構成定義
        戻り値:
        自身のインスタンス
        例外:
        IllegalOperateException - 既に同じ組み合わせのエンティティの構成定義を指定しているときにスローされます。
      • where

        AutoSelect<T> where​(Predicate where)
        検索条件を指定します。
        パラメータ:
        where - 検索条件。
        戻り値:
        自身のインスタンス。
      • orderBy

        AutoSelect<T> orderBy​(OrderSpecifier... orders)
        ソート順を指定します。
        パラメータ:
        orders - ソートするロパティの並び順情報
        戻り値:
        自身のインスタンス。
      • id

        AutoSelect<T> id​(Object... idPropertyValues)
        WHERE句の条件にIdプロパティ(主キー)を指定します。
        パラメータ:
        idPropertyValues - IDプロパティの値。エンティティに定義している順で指定する必要があります。
        戻り値:
        自身のインスタンス。
        例外:
        IllegalOperateException - 指定したIDの個数とエンティティの個数と一致しないときにスローされます。
      • version

        AutoSelect<T> version​(Object versionPropertyValue)
        WHERE句の条件にバージョンプロパティを指定します。
        パラメータ:
        versionPropertyValue - バージョンプロパティの値。
        戻り値:
        自身のインスタンス
        例外:
        IllegalOperateException - エンティティにバージョンキーが定義されていないときにスローされます。
      • forUpdate

        AutoSelect<T> forUpdate()
        FOR UPDATE を追加します。
        戻り値:
        このインスタンス自身。
        例外:
        IllegalOperateException - DBMSがこの操作をサポートしていない場合にスローされます。
      • forUpdateNoWait

        AutoSelect<T> forUpdateNoWait()
        FOR UPDATE NOWAIT を追加します。
        戻り値:
        このインスタンス自身。
        例外:
        IllegalOperateException - DBMSがこの操作をサポートしていない場合にスローされます。
      • forUpdateWait

        AutoSelect<T> forUpdateWait​(int seconds)
        FOR UPDATE WAIT を追加します。
        パラメータ:
        seconds - ロックを獲得できるまでの最大待機時間(秒単位)
        戻り値:
        このインスタンス自身。
        例外:
        IllegalOperateException - DBMSがこの操作をサポートしていない場合にスローされます。
      • getCount

        long getCount()
        SQLが返す結果セットの行数を返します。
        戻り値:
        SQLが返す結果セットの行数
      • getSingleResult

        T getSingleResult()
        検索してベースオブジェクトを返します。
        戻り値:
        ベースオブジェクト。
        例外:
        org.springframework.dao.EmptyResultDataAccessException - 1件も見つからなかった場合にスローされます。
        org.springframework.dao.IncorrectResultSizeDataAccessException - 2件以上見つかった場合にスローされます。
      • getOptionalResult

        Optional<T> getOptionalResult()
        検索してベースオブジェクトを返します。
        戻り値:
        ベースオブジェクト。1件も対象がないときは空を返します。
        例外:
        org.springframework.dao.IncorrectResultSizeDataAccessException - 2件以上見つかった場合にスローされます。
      • getResultList

        List<T> getResultList()
        検索してベースオブジェクトを返します。
        戻り値:
        検索してヒットした複数のベースオブジェクト。1件も対象がないときは空のリストを返します。
      • getResultStream

        Stream<T> getResultStream()
        問い合わせ結果をStream で取得します。 問い合わせ結果全体のリストを作成しないため、問い合わせ結果が膨大になる場合でもメモリ消費量を抑えることが出来ます。
        戻り値:
        問い合わせの結果。