Class StandardSqlBuilder

java.lang.Object
nablarch.common.dao.StandardSqlBuilder

@Published(tag="architect") public class StandardSqlBuilder extends Object
ユニバーサルDAOで使用するSQL文を構築するクラス。

生成するSQL文は以下のとおり。

  • ID列を条件としたSELECT文
  • 条件なしのSELECT文
  • ID列を条件としたUPDATE文(バージョンカラムがある場合はそのカラムも条件に含まれる)
  • ID列を条件としたDELETE文
  • 全カラムを対象としたINSERT文(IDENTITYカラムはサポートしない)
  • Constructor Details

    • StandardSqlBuilder

      public StandardSqlBuilder()
  • Method Details

    • buildSelectByIdSql

      public <T> String buildSelectByIdSql(Class<T> entityClass)
      ID列を条件として全カラムの情報を取得するSQL文を構築する。
      Type Parameters:
      T - 型パラメータ
      Parameters:
      entityClass - エンティティクラス
      Returns:
      ID列を条件としたSQL文
    • buildSelectAllSql

      public <T> String buildSelectAllSql(Class<T> entityClass)
      全レコード検索(条件なし)のSQL文を構築する。
      Type Parameters:
      T - 型パラメータ
      Parameters:
      entityClass - エンティティクラス
      Returns:
      条件なしのSELECT文
    • buildUpdateSql

      public <T> SqlWithParams buildUpdateSql(T entity)
      ID列を条件とした更新用のSQL文を構築する。
      Type Parameters:
      T - 型
      Parameters:
      entity - エンティティ情報
      Returns:
      更新用のSQL文
    • buildBatchUpdateSql

      public <T> BatchSqlWithColumns buildBatchUpdateSql(Class<T> entityClass)
      ID列を条件とした一括更新用(batch update)のSQL文を構築する。
      Type Parameters:
      T - 型
      Parameters:
      entityClass - エンティティクラス
      Returns:
      更新用のSQL文
    • buildDeleteSql

      public <T> SqlWithParams buildDeleteSql(T entity)
      ID列を条件とした削除用のSQL文を構築する。
      Type Parameters:
      T - 型
      Parameters:
      entity - エンティティ
      Returns:
      削除用SQL文
    • buildBatchDeleteSql

      public <T> BatchSqlWithColumns buildBatchDeleteSql(Class<T> entityClass)
      ID列を条件とした一括削除用(batch delete)のSQL文を構築する。
      Type Parameters:
      T - エンティティクラス
      Parameters:
      entityClass - エンティティクラス
      Returns:
      一括削除用SQL文
    • buildInsertSql

      public <T> SqlWithParams buildInsertSql(T entity)
      登録用のSQLを構築する。

      採番カラムも含む全てのカラムを対象としたデータ登録用INSERT文を構築する。 構築したINSERT文を使用する場合には、採番されるカラムの値は事前に採番し、 Entityクラスに対して値を設定する必要がある。

      Type Parameters:
      T - エンティティクラス
      Parameters:
      entity - エンティティ
      Returns:
      構築したSQL
    • buildInsertWithIdentityColumnSql

      public <T> SqlWithParams buildInsertWithIdentityColumnSql(T entity)
      登録用のSQLを構築する。

      データベース側での採番(MySqlのAUTO_INCREMENTやPostgreSqlのSERIALカラムなど)を行うための データ登録用INSERT文を生成する。 構築したINSERT文を使用する場合には、データベースへのデータ登録時に値が採番されるため、 データ登録後にデータベースから採番された値を取得する必要がある。

      Type Parameters:
      T - 型
      Parameters:
      entity - エンティティ
      Returns:
      構築したSQL
    • buildBatchInsertSql

      public <T> BatchSqlWithColumns buildBatchInsertSql(Class<T> entityClass)
      一括登録用(batch insert用)のSQLを構築する。

      採番カラムも含む全てのカラムを対象としたデータ登録用INSERT文を構築する。 構築したINSERT文を使用する場合には、採番されるカラムの値は事前に採番し、 Entityクラスに対して値を設定する必要がある。

      Type Parameters:
      T - エンティティクラス
      Parameters:
      entityClass - エンティティクラス
      Returns:
      構築したSQL
    • buildBatchInsertWithIdentityColumnSql

      public <T> BatchSqlWithColumns buildBatchInsertWithIdentityColumnSql(Class<T> entityClass)
      一括登録用(batch insert用)のSQLを構築する。

      データベース側での採番(MySqlのAUTO_INCREMENTやPostgreSqlのSERIALカラムなど)を行うための データ登録用INSERT文を生成する。 構築したINSERT文を使用する場合には、データベースへのデータ登録時に値が採番されるため、 データ登録後にデータベースから採番された値を取得する必要がある。

      Type Parameters:
      T - エンティティクラス
      Parameters:
      entityClass - エンティティクラス
      Returns:
      構築したSQL
    • buildIdCondition

      protected <T> String buildIdCondition(Class<T> entityClass)
      ID列を条件とするWHERE句を構築する。
      Type Parameters:
      T - 型パラメータ
      Parameters:
      entityClass - エンティティクラス
      Returns:
      ID列を条件としたWHERE句
    • toTableName

      protected <T> String toTableName(Class<T> entityClass)
      エンティティクラス名からテーブル名(スキーマ名つき)へ変換する。
      Type Parameters:
      T - エンティティクラス
      Parameters:
      entityClass - エンティティクラス
      Returns:
      スキーマ名を修飾子に指定したテーブル名(スキーマ名指定がない場合は、テーブル名のみ)