クラス Query_JDBCTableMerge
java.lang.Object
org.opengion.hayabusa.db.AbstractQuery
org.opengion.plugin.query.Query_JDBCTableMerge
- すべての実装されたインタフェース:
Query
引数引き当て(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,
-
フィールドの概要
クラスから継承されたフィールド org.opengion.hayabusa.db.AbstractQuery
ARG_ARRAY, BUFFER_MIDDLE, CR, DB_FETCH_SIZE, DB_MAX_QUERY_TIMEOUT, ERR_MSG, ERR_MSG_ARRAY, SYSARG_ARRAY
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
クラスから継承されたメソッド org.opengion.hayabusa.db.AbstractQuery
createTableModel, execute, 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
-
コンストラクタの詳細
-
Query_JDBCTableMerge
public Query_JDBCTableMerge()デフォルトコンストラクター- 変更履歴:
- 7.2.9.1 (2020/10/23) 新規作成
-
-
メソッドの詳細
-
execute
引数配列付のクエリーを実行します。 処理自体は、#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 条件で存在すれば何もしない
-