パッケージ 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>
導入されたバージョン:
JDK11.0,
  • コンストラクタの詳細

    • 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:チェック例外でストリームやリソースのクリーンアップに失敗するかもしれないメソッド, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない