パッケージ 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,
    • コンストラクタの詳細

      • 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)対応