クラス MyBatisDataAccessStrategy

java.lang.ObjectSE
org.springframework.data.jdbc.mybatis.MyBatisDataAccessStrategy
実装されたすべてのインターフェース:
DataAccessStrategyRelationResolver

public class MyBatisDataAccessStrategy extends ObjectSE implements DataAccessStrategy
MyBatis に基づく DataAccessStrategy 実装。各メソッドはステートメントにマップされます。ステートメントの名前は次のように構成されます。デフォルトでは、名前空間はエンティティのクラスと接尾辞 "Mapper" に基づきます。その後にドットで区切られたメソッド名が続きます。引数として PropertyPath を取るメソッドの場合、関連するエンティティはパスのルートのエンティティであり、パス自体はステートメント名に追加されたドットで区切られた文字列として取得されます。各ステートメントは、少なくとも entityType が設定されている MyBatisContext のインスタンスを取得します。PropertyPath を取るメソッドの場合、コンテキストがリーフ型のクラスに設定されている場合、entityType になります。
作成者:
Jens Schauder, Kazuki Shimizu, Oliver Gierke, Mark Paluch, Tyler Van Gorder, Milan Milanov, Myeonghyeon Lee, Chirag Tailor, Christopher Klein, Mikhail Polivakha, Sergey Korotaev
  • コンストラクターの詳細

  • メソッドの詳細

    • createCombinedAccessStrategy

      public static DataAccessStrategy createCombinedAccessStrategy(RelationalMappingContext context, JdbcConverter converter, NamedParameterJdbcOperations operations, org.apache.ibatis.session.SqlSession sqlSession, Dialect dialect)
      MyBatis によって定義されたクエリを最初にチェックし、見つからない場合は DefaultDataAccessStrategy を使用する DataAccessStrategy を作成します
    • createCombinedAccessStrategy

      public static DataAccessStrategy createCombinedAccessStrategy(RelationalMappingContext context, JdbcConverter converter, NamedParameterJdbcOperations operations, org.apache.ibatis.session.SqlSession sqlSession, NamespaceStrategy namespaceStrategy, Dialect dialect)
      MyBatis によって定義されたクエリを最初にチェックし、見つからない場合は DefaultDataAccessStrategy を使用する DataAccessStrategy を作成します
    • setNamespaceStrategy

      public void setNamespaceStrategy(NamespaceStrategy namespaceStrategy)
      使用する NamespaceStrategy を設定します。
      パラメーター:
      namespaceStrategy - null 以外である必要があります
    • insert

      public <T> ObjectSE insert(T instance, ClassSE<T> domainType, Identifier identifier, IdValueSource idValueSource)
      インターフェースからコピーされた説明: DataAccessStrategy
      単一のエンティティのデータを挿入します。参照されたエンティティは処理されません。
      次で指定:
      インターフェース DataAccessStrategyinsert 
      型パラメーター:
      T - インスタンスの型。
      パラメーター:
      instance - 格納されるインスタンス。null であってはなりません。
      domainType - インスタンスの型。null であってはなりません。
      identifier - 挿入を考慮する必要があるが、エンティティの一部ではないデータに関する情報。つまり、親エンティティと、MapSE または ListSE に格納されているエンティティのキー / インデックス列への参照です。
      idValueSource - インサート用の IdValueSource
      戻り値:
      データベースが生成した ID(存在する場合)。
    • insert

      public <T> ObjectSE[] insert(ListSE<InsertSubject<T>> insertSubjects, ClassSE<T> domainType, IdValueSource idValueSource)
      インターフェースからコピーされた説明: DataAccessStrategy
      複数のエンティティのデータを挿入します。
      次で指定:
      インターフェース DataAccessStrategyinsert 
      型パラメーター:
      T - インスタンスの型。
      パラメーター:
      insertSubjects - 挿入されるサブジェクト。各サブジェクトにはインスタンスとその識別子が含まれます。null であってはなりません。
      domainType - インスタンスの型。null であってはなりません。
      idValueSource - インサート用の IdValueSource
      戻り値:
      ID が生成された場合、挿入された各レコードに対応する ID。ID が生成されなかった場合、要素は null になります。
    • update

      public <S> boolean update(S instance, ClassSE<S> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      データベース内の単一のエンティティのデータを更新します。参照されたエンティティは処理されません。
      次で指定:
      インターフェース DataAccessStrategyupdate 
      型パラメーター:
      S - 保存するインスタンスの型。
      パラメーター:
      instance - 保存するインスタンス。null であってはなりません。
      domainType - 保存するインスタンスの型。null であってはなりません。
      戻り値:
      更新によって実際に行が更新されたかどうか。
    • updateWithVersion

      public <S> boolean updateWithVersion(S instance, ClassSE<S> domainType, NumberSE previousVersion)
      インターフェースからコピーされた説明: DataAccessStrategy
      データベース内の単一のエンティティのデータを更新し、previousVersion プロパティを使用して楽観的レコードロックを適用します。参照されたエンティティは処理されません。

      ステートメントの形式は UPDATE … SET … WHERE ID = :id and VERSION_COLUMN = :previousVersion  になり、行が更新されていない場合は楽観的レコードロック例外がスローされます。

      次で指定:
      インターフェース DataAccessStrategyupdateWithVersion 
      型パラメーター:
      S - 保存するインスタンスの型。
      パラメーター:
      instance - 保存するインスタンス。null であってはなりません。
      domainType - 保存するインスタンスの型。null であってはなりません。
      previousVersion - 保存されるインスタンスに割り当てられた以前のバージョン。
      戻り値:
      更新によって実際に行が更新されたかどうか。
    • delete

      public void delete(ObjectSE id, ClassSE<?> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      domainType で識別されるテーブルから、ID で識別される単一の行を削除します。カスケード削除は処理されません。

      ステートメントの形式は DELETE FROM … WHERE ID = :id and VERSION_COLUMN = :version  になり、行が更新されていない場合は楽観的レコードロック例外がスローされます。

      次で指定:
      インターフェース DataAccessStrategydelete 
      パラメーター:
      id - 削除する行の ID。null であってはなりません。
      domainType - 削除するエンティティの型。操作するテーブルを暗黙的に決定します。null であってはなりません。
    • delete

      public void delete(IterableSE<ObjectSE> ids, ClassSE<?> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      domainType で識別されるテーブルから、ID で識別される複数の行を削除します。カスケード削除は処理されません。

      ステートメントの形式は DELETE FROM … WHERE ID IN (:ids)  になり、行が更新されていない場合は楽観的レコードロック例外がスローされます。

      次で指定:
      インターフェース DataAccessStrategydelete 
      パラメーター:
      ids - 削除する行の ID。null であってはなりません。
      domainType - 削除するエンティティの型。操作するテーブルを暗黙的に決定します。null であってはなりません。
    • deleteWithVersion

      public <T> void deleteWithVersion(ObjectSE id, ClassSE<T> domainType, NumberSE previousVersion)
      インターフェースからコピーされた説明: DataAccessStrategy
      データベースから単一のエンティティを削除し、バージョンプロパティを使用して楽観的レコードロックを適用します。カスケード削除を処理しません。
      次で指定:
      インターフェース DataAccessStrategydeleteWithVersion 
      パラメーター:
      id - 削除する行の ID。null であってはなりません。
      domainType - 削除するエンティティの型。操作するテーブルを暗黙的に決定します。null であってはなりません。
      previousVersion - 保存されるインスタンスに割り当てられた以前のバージョン。
    • delete

      public void delete(ObjectSE rootId, PersistentPropertyPath<RelationalPersistentProperty> propertyPath)
      インターフェースからコピーされた説明: DataAccessStrategy
      rootId によって識別されるインスタンスから、propertyPath 経由で到達可能なすべてのエンティティを削除します。
      次で指定:
      インターフェース DataAccessStrategydelete 
      パラメーター:
      rootId - propertyPath のベースとなるルートオブジェクトの ID。null であってはなりません。
      propertyPath - ルートオブジェクトから削除するエンティティへのリード。null であってはなりません。
    • delete

      public void delete(IterableSE<ObjectSE> rootIds, PersistentPropertyPath<RelationalPersistentProperty> propertyPath)
      インターフェースからコピーされた説明: DataAccessStrategy
      rootIds によって識別されるインスタンスから、propertyPath 経由で到達可能なすべてのエンティティを削除します。
      次で指定:
      インターフェース DataAccessStrategydelete 
      パラメーター:
      rootIds - propertyPath のベースとなるルートオブジェクトの ID。null または空であってはなりません。
      propertyPath - ルートオブジェクトから削除するエンティティへのリード。null であってはなりません。
    • deleteAll

      public <T> void deleteAll(ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定されたドメイン型のすべてのエンティティを削除します。
      次で指定:
      インターフェース DataAccessStrategydeleteAll 
      型パラメーター:
      T - ドメイン型の型。
      パラメーター:
      domainType - すべてのエントリを削除するドメイン型。null であってはなりません。
    • deleteAll

      public void deleteAll(PersistentPropertyPath<RelationalPersistentProperty> propertyPath)
      インターフェースからコピーされた説明: DataAccessStrategy
      任意のインスタンスから propertyPath 経由でアクセス可能なすべてのエンティティを削除します。
      次で指定:
      インターフェース DataAccessStrategydeleteAll 
      パラメーター:
      propertyPath - ルートオブジェクトから削除するエンティティへのリード。null であってはなりません。
    • acquireLockById

      public <T> void acquireLockById(ObjectSE id, LockMode lockMode, ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      id で指定された集約のロックを取得します。
      次で指定:
      インターフェース DataAccessStrategyacquireLockById 
      パラメーター:
      id - ロードするエンティティの ID。null であってはなりません。
      lockMode - 選択のためのロックモード。null であってはなりません。
      domainType - エンティティのドメイン型。null であってはなりません。
    • acquireLockAll

      public <T> void acquireLockAll(LockMode lockMode, ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定されたドメイン型のすべての集約のロックを取得します。
      次で指定:
      インターフェース DataAccessStrategyacquireLockAll 
      パラメーター:
      lockMode - 選択のためのロックモード。null であってはなりません。
      domainType - エンティティのドメイン型。null であってはなりません。
    • findById

      public <T> T findById(ObjectSE id, ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      型と ID で識別される単一のエンティティをロードします。
      次で指定:
      インターフェース DataAccessStrategyfindById 
      型パラメーター:
      T - エンティティの型。
      パラメーター:
      id - ロードするエンティティの ID。null であってはなりません。
      domainType - エンティティのドメイン型。null であってはなりません。
      戻り値:
      null を返す場合があります。
    • findAll

      public <T> ListSE<T> findAll(ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された型のすべてのエンティティをロードします。
      次で指定:
      インターフェース DataAccessStrategyfindAll 
      型パラメーター:
      T - ロードするエンティティの型。
      パラメーター:
      domainType - ロードするエンティティの型。null であってはなりません。
      戻り値:
      null ではないことが保証されています。
    • streamAll

      public <T> StreamSE<T> streamAll(ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された型のすべてのエンティティを StreamSE にロードします。
      次で指定:
      インターフェース DataAccessStrategystreamAll 
      型パラメーター:
      T - ロードするエンティティの型。
      パラメーター:
      domainType - ロードするエンティティの型。null であってはなりません。
      戻り値:
      null ではないことが保証されています。
    • findAllById

      public <T> ListSE<T> findAllById(IterableSE<?> ids, ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      引数として渡された ID のいずれかに一致するすべてのエンティティをロードします。渡される ID の数が返されるエンティティの数と一致することは保証されません。
      次で指定:
      インターフェース DataAccessStrategyfindAllById 
      型パラメーター:
      T - ロードするエンティティの型。
      パラメーター:
      ids - ロードするエンティティの ID。null であってはなりません。
      domainType - ロードするエンティティの型。null であってはなりません。
      戻り値:
      ロードされたエンティティ。null ではないことが保証されています。
    • streamAllByIds

      public <T> StreamSE<T> streamAllByIds(IterableSE<?> ids, ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      StreamSE に引数として渡された ID の 1 つに一致するすべてのエンティティを読み込みます。渡された ID の数が返されるエンティティの数と一致することは保証されません。
      次で指定:
      インターフェース DataAccessStrategystreamAllByIds 
      型パラメーター:
      T - ロードするエンティティの型。
      パラメーター:
      ids - ロードするエンティティの ID。null であってはなりません。
      domainType - ロードするエンティティの型。null であってはなりません。
      戻り値:
      ロードされたエンティティ。null ではないことが保証されています。
    • findAllByPath

      public ListSE<ObjectSE> findAllByPath(Identifier identifier, PersistentPropertyPath<? extends RelationalPersistentProperty> path)
      インターフェースからコピーされた説明: RelationResolver
      パスを介して到達可能なすべてのエンティティを検索します。
      次で指定:
      インターフェース DataAccessStrategyfindAllByPath 
      次で指定:
      インターフェース RelationResolverfindAllByPath 
      パラメーター:
      identifier - ロードされるエンティティの親を識別する ID、マップキー、リストインデックスの組み合わせ。null であってはなりません。
      path - 集約ルートから解決されるエンティティへのパス。null であってはなりません。
      戻り値:
      null でないことが保証されています。
    • existsById

      public <T> boolean existsById(ObjectSE id, ClassSE<T> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された型の指定された ID を持つ行が存在する場合に返します。
      次で指定:
      インターフェース DataAccessStrategyexistsById 
      型パラメーター:
      T - エンティティの型。
      パラメーター:
      id - チェックするエンティティの ID。null であってはなりません。
      domainType - チェックするエンティティの型。null であってはなりません。
      戻り値:
      一致する行が存在する場合は true、そうでない場合は false
    • findAll

      public <T> ListSE<T> findAll(ClassSE<T> domainType, Sort sort)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された型のすべてのエンティティをソートしてロードします。
      次で指定:
      インターフェース DataAccessStrategyfindAll 
      型パラメーター:
      T - ロードするエンティティの型。
      パラメーター:
      domainType - ロードするエンティティの型。null であってはなりません。
      sort - ソート情報。null であってはなりません。
      戻り値:
      null ではないことが保証されています。
    • streamAll

      public <T> StreamSE<T> streamAll(ClassSE<T> domainType, Sort sort)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された型のすべてのエンティティをソートして StreamSE にロードします。
      次で指定:
      インターフェース DataAccessStrategystreamAll 
      型パラメーター:
      T - ロードするエンティティの型。
      パラメーター:
      domainType - ロードするエンティティの型。null であってはなりません。
      sort - ソート情報。null であってはなりません。
      戻り値:
      null ではないことが保証されています。
    • findAll

      public <T> ListSE<T> findAll(ClassSE<T> domainType, Pageable pageable)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された型のすべてのエンティティを読み込み、ページングしてソートします。
      次で指定:
      インターフェース DataAccessStrategyfindAll 
      型パラメーター:
      T - ロードするエンティティの型。
      パラメーター:
      domainType - ロードするエンティティの型。null であってはなりません。
      pageable - ページネーション情報。null であってはなりません。
      戻り値:
      null ではないことが保証されています。
    • findOne

      public <T> OptionalSE<T> findOne(Query query, ClassSE<T> probeType)
      インターフェースからコピーされた説明: DataAccessStrategy
      SELECT クエリを実行し、結果のアイテムをエンティティに変換して、結果が 1 つだけになるようにします。
      次で指定:
      インターフェース DataAccessStrategyfindOne 
      パラメーター:
      query - null であってはなりません。
      probeType - エンティティの型。null であってはなりません。
      戻り値:
      正確に 1 つの結果、または一致が見つからない場合は Optional.empty()
    • findAll

      public <T> ListSE<T> findAll(Query query, ClassSE<T> probeType)
      インターフェースからコピーされた説明: DataAccessStrategy
      SELECT クエリを実行し、結果のアイテムを IterableSE に変換します。
      次で指定:
      インターフェース DataAccessStrategyfindAll 
      パラメーター:
      query - null であってはなりません。
      probeType - エンティティの型。null であってはなりません。
      戻り値:
      一致するすべての結果を含む null 以外のリスト。
    • streamAll

      public <T> StreamSE<T> streamAll(Query query, ClassSE<T> probeType)
      インターフェースからコピーされた説明: DataAccessStrategy
      SELECT クエリを実行し、結果のアイテムを StreamSE に変換します。
      次で指定:
      インターフェース DataAccessStrategystreamAll 
      パラメーター:
      query - null であってはなりません。
      probeType - エンティティの型。null であってはなりません。
      戻り値:
      一致するすべての結果を含む null 以外のリスト。
    • findAll

      public <T> ListSE<T> findAll(Query query, ClassSE<T> probeType, Pageable pageable)
      インターフェースからコピーされた説明: DataAccessStrategy
      SELECT クエリを実行し、結果の項目を IterableSE に変換します。結果に Pageable を適用します。
      次で指定:
      インターフェース DataAccessStrategyfindAll 
      パラメーター:
      query - null であってはなりません。
      probeType - エンティティの型。null であってはなりません。
      pageable - 適用するページネーション。null であってはなりません。
      戻り値:
      一致するすべての結果を含む null 以外のリスト。
    • exists

      public <T> boolean exists(Query query, ClassSE<T> probeType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された Query に一致する型 domainType の集約があるかどうかを判別します。
      次で指定:
      インターフェース DataAccessStrategyexists 
      パラメーター:
      query - null であってはなりません。
      probeType - エンティティの型。null であってはなりません。
      戻り値:
      オブジェクトが存在する場合は true。
    • count

      public <T> long count(Query query, ClassSE<T> probeType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定された query に一致する、指定されたプローブ型を表すテーブル内の行をカウントします。
      次で指定:
      インターフェース DataAccessStrategycount 
      パラメーター:
      query - 要素が一致する必要があるクエリ。
      probeType - 要素をカウントするプローブ型。null であってはなりません。
      戻り値:
      カウント。null ではないことが保証されています。
    • count

      public long count(ClassSE<?> domainType)
      インターフェースからコピーされた説明: DataAccessStrategy
      指定されたドメイン型を表すテーブル内の行をカウントします。
      次で指定:
      インターフェース DataAccessStrategycount 
      パラメーター:
      domainType - 要素をカウントするドメイン型。null であってはなりません。
      戻り値:
      カウント。null ではないことが保証されています。