パッケージ org.opengion.plugin.query

## クラス Query_JDBCTableMerge

- java.lang.Object
- - org.opengion.hayabusa.db.AbstractQuery
  - - org.opengion.plugin.query.Query_JDBCTableMerge

- すべての実装されたインタフェース:
    `Query`

      public class Query_JDBCTableMerge
      extends AbstractQuery

  引数引き当て(PreparedStatement) を利用した登録系Queryです。 java.sql.PreparedStatement を用いて、データベース登録処理を行います。 引数の指定方法は、DBTableModele のカラム名に対応する名称を、SQL文の[カラム名]形式で 記述します。これを解析して、実際に実行する PreparedStatement に対応する文字列を 作成します。 たとえば、INSERT INTO GEXX (CLM,NAME_JA,LABEL_NAME) VALUES ([CLM],[NAME_JA],[LABEL_NAME] ) と記述すれば、内部で、DBTableModele のカラム名に対応する値を取り出し、SQL文として、 INSERT INTO GEXX (CLM,NAME_JA,LABEL_NAME) VALUES (?,?,? ) を実行します。 Query_JDBCTableUpdate との違いは、INSERT文とUPDATE文を渡しておき、 UPDATEの処理結果が、0件の場合は、INSERTを行います。 そのため、tableUpdateタグのBODY部に直接SQLを書くのではなく、tableUpdateParam ﾀｸﾞを2個書くことになります。 基本的に、tableUpdateタグのqueryTypeにJDBCTableUpdateと記述しておき、tableUpdateParam の sqlType が MERGE の場合は、2種類のSQL文が作成され、自動的に、JDBCTableMerge が呼ばれます。 ※ つまり、通常は、queryType="JDBCTableUpdate" のままで、sqlType="MERGE" を指定すればよい。
  変更履歴:
    7.2.9.1 (2020/10/23) 新規作成
  機能分類
    データ編集
  形式サンプル:
    ●使用例 ・JDBCTableUpdate のまま、sqlType="MERGE" を指定する場合。 【entry.jsp】 <og:tableUpdate command = "{@command}" queryType = "JDBCTableUpdate" <og:tableUpdateParam sqlType = "MERGE" // INSERT or UPDATE table = "{@TABLE_NAME}" // 処理対象のテーブル名 names = "{@names}" // 処理対象のカラム名 omitNames = "{@omitNames}" // 処理対象外のカラム名 where = "{@where}" // 処理対象を特定するキー（INSERT時には使われず、UPDAET時に使われる。） constKeys = "{@constKeys}" // 処理カラム名の中の固定情報カラム名 constVals = "{@constVals}" // 処理カラム名の中の固定情報設定値 /> </og:tableUpdate> ・JDBCTableMerge を直接的に指定する場合。 【entry.jsp】 <og:tableUpdate command = "{@command}" queryType = "JDBCTableMerge" <og:tableUpdateParam sqlType = "INSERT" // INSERT or UPDATE table = "{@TABLE_NAME}" // 処理対象のテーブル名 names = "{@names}" // 処理対象のカラム名 omitNames = "{@omitNames}" // 処理対象外のカラム名 constKeys = "{@constKeys}" // 処理カラム名の中の固定情報カラム名 constVals = "{@constVals}" // 処理カラム名の中の固定情報設定値 /> <og:tableUpdateParam sqlType = "UPDATE" // INSERT or UPDATE table = "{@TABLE_NAME}" // 処理対象のテーブル名 names = "{@names}" // 処理対象のカラム名 omitNames = "{@omitNames}" // 処理対象外のカラム名 where = "{@where}" // 処理対象を特定するキー constKeys = "{@constKeys}" // 処理カラム名の中の固定情報カラム名 constVals = "{@constVals}" // 処理カラム名の中の固定情報設定値 /> </og:tableUpdate>
  バージョン
    7.2
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK11.0,

- - ### フィールドの概要

    - ### クラスから継承されたフィールド org.opengion.hayabusa.db.AbstractQuery

      `ARG_ARRAY, BUFFER_MIDDLE, CR, DB_FETCH_SIZE, DB_MAX_QUERY_TIMEOUT, ERR_MSG, ERR_MSG_ARRAY, SYSARG_ARRAY`

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `Query_JDBCTableMerge()` | デフォルトコンストラクター

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `void` | `execute​(int[] rowNo, DBTableModel table)` | 引数配列付のクエリーを実行します。

    - ### クラスから継承されたメソッド org.opengion.hayabusa.db.AbstractQuery

      `createTableModel, execute, execute, execute, getConnection, getDBTableModel, getEditConfig, getErrorCode, getErrorMessage, getExecuteCount, getMaxRowCount, getMergeStatement, getSkipRowCount, getStatement, isUpdate, setConnection, setDBTableModel, setEditConfig, setErrorCode, setErrorMessage, setExecuteCount, setMaxRowCount, setMergeStatement, setResourceManager, setSkipRowCount, setStatement, setUpdateFlag, toString, useParameterMetaData`

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### Query_JDBCTableMerge

          public Query_JDBCTableMerge()

      デフォルトコンストラクター
      変更履歴:
        7.2.9.1 (2020/10/23) 新規作成

  - ### メソッドの詳細

    - #### execute

          public void execute​(int[] rowNo,
                              DBTableModel table)

      引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の [カラム名] 部分の引数を、DBTableModelから順番にセットしていきます。
      定義:
        `execute` インタフェース内 `Query`
      オーバーライド:
        `execute` クラス内 `AbstractQuery`
      パラメータ:
        `rowNo` - 選択された行番号配列(登録する対象行)
        `table` - DBTableModelオブジェクト(登録する元データ)
      変更履歴:
        7.2.9.1 (2020/10/23) TableUpdateParamTag のマージ(UPDATE,INSERT)対応, 7.3.0.0 (2021/01/06) SpotBugs:チェック例外でストリームやリソースのクリーンアップに失敗するかもしれないメソッド