クラス DBCopyTag

  • すべての実装されたインタフェース:
    Serializable, javax.servlet.jsp.tagext.BodyTag, javax.servlet.jsp.tagext.IterationTag, javax.servlet.jsp.tagext.JspTag, javax.servlet.jsp.tagext.Tag, javax.servlet.jsp.tagext.TryCatchFinally

    public class DBCopyTag
    extends CommonTagSupport
    データベースのデータコピー/移動/更新/削除を行うタグです。
     検索結果のデータを、action に応じた方法で、処理します。
     SELECT文は、BODY部に記述することも可能です。
     BODY にSELECT文を記述しない場合は、names と、table から、SELECT文を作成します。
     names2 は、INSERTやUPDATE の カラム名で、SELECT文の先頭から順に適用します。
     WHERE条件は、SELECT結果を利用できますが、必ず、names2 のカラムか、そうでないならば、
     それ以降に記述してください。
    
     このタグは、DBTableModel を経由せず、直接、接続元から接続先へデータ処理を行います。
     接続元の1レコード単位に、接続先に対して、処理を実行します。
     よって、大量データ処理が可能ですが、まとめ処理を行っていない分、時間が掛かります。
    
     用途としては、WORKテーブルへのデータコピーや、BKUPテーブルへのコピーが考えられ
     ますが、それらは、select insert などの直接的な処理のほうが良いです。
     ここでは、別ユーザーや、別インスタンス、または、別データベース(ORACLEから、MySQLへ)など、
     dbid違いのテーブルへのデータ処理用途を、想定しています。
     なので、複雑な処理や、PL/SQL等のデータベース独自処理は行えません。
     SELECT文は、直接記述できるため、データベース固有の関数や、構文を記載可能ですが、
     INSERT,UPDATE,DELETE 文は、基本的に共通構文であり、WHERE条件等も、一般的は範囲に
     とどめてください。
    
     SELECTカラムとINSERTカラムが異なる場合は、name 指定と、name2 指定のカラムが対応します。
     追加、更新先のカラム名に変更して置いてください。
     BODY部にSELECT文を記述した場合は、カラム順が、name 順となり、name2 と対応されます。
     constKeys,constVals も、更新先のカラム名で指定します。
     処理の途中でエラー(例えば、ユニークキー制約等)になった場合は、stopError属性の
     値に応じて処理を継続するかどうかを決定します。
     stopError="true" が初期値なので、エラー時点で、処理を中断します。
    
     action="INSERT"
        SELECT結果を、table2 に、INSERT します。where2,whereNames2 は使用しません。
        name2 を使用しない場合は、name と同じカラム配列で、INSERT します。
        stopError="false"(エラー時も継続する) とした場合、SELECT結果は、最後まで
        INSERTを試みます。
    
     action="UPDATE"
        SELECT結果を、table2 に、where2,whereNames2 に基づいて UPDATE します。
        SELECTには、更新で使用する where条件となるカラムを含める必要があります。
        更新するカラムは、name2 で指定することになります。
        更新対象が存在しなかった場合は、エラーとは判定していません。
    
     action="DELETE"
        SELECT結果を、table2 に、where2,whereNames2 に基づいて table2 のデータを 削除 します。
        SELECTには、削除で使用する where条件となるカラムを含める必要があります。
        削除対象が存在しなかった場合は、エラーとは判定していません。
    
     action="MERGE"
        SELECT結果を、table2 に、where2,whereNames2 に基づいて UPDATE/INSERT します。
        SELECTには、更新で使用する where条件となるカラムを含める必要があります。
        更新するカラムは、name2 で指定することになります。
        更新対象が存在しなかった場合は、INSERT になります。
        (つまり、更新を一度試みて、更新件数が、0件の場合に、INSERTします。)
        INSERTするカラムは、SELECTしたすべてのカラムが対象になります。
    
     useDelete="true" を指定すると、検索元のデータを削除します。
     INSERT 時に指定すれば、MOVE と同じ効果になります。
     stopError="false" (エラー時でも処理を継続する)にした場合、検索元のデータ削除は、
     エラー行については、実行されません。ただし、UPDATE,DELETE 等で、対象データが
     存在しない場合は、エラーと判断しないため、検索元のデータを削除します。
    
     SystemData の USE_SQL_INJECTION_CHECK が true か、quotCheck 属性が true の場合は、
     SQLインジェクション対策用のシングルクォートチェックを行います。リクエスト引数に
     シングルクォート(')が含まれると、エラーになります。
    
     DBLastSql はセットされません。
     つまり、このタグでSELECTされたデータを、ファイル出力することはできません。
    
     実行後にリクエストパラメータに以下の値がセットされます。
       DB.COUNT     : 検索結果の件数
       DB.UPCOUNT   : 追加/更新/削除結果の件数
       DB.ERR_CODE  : 検索結果のエラーコード(複数合った場合は、最後のエラーコード)
    
     ※ このタグは、Transaction タグの対象です。
    関連項目:
    直列化された形式
    導入されたバージョン:
    JDK8.0,
    • コンストラクタの詳細

      • DBCopyTag

        public DBCopyTag()
        デフォルトコンストラクター
    • メソッドの詳細

      • doStartTag

        public int doStartTag()
        Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
        定義:
        doStartTag インタフェース内 javax.servlet.jsp.tagext.Tag
        オーバーライド:
        doStartTag クラス内 CommonTagSupport
        戻り値:
        後続処理の指示
      • doAfterBody

        public int doAfterBody()
        Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
        定義:
        doAfterBody インタフェース内 javax.servlet.jsp.tagext.IterationTag
        オーバーライド:
        doAfterBody クラス内 CommonTagSupport
        戻り値:
        後続処理の指示(SKIP_BODY)
      • doEndTag

        public int doEndTag()
        Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
        定義:
        doEndTag インタフェース内 javax.servlet.jsp.tagext.Tag
        オーバーライド:
        doEndTag クラス内 CommonTagSupport
        戻り値:
        後続処理の指示
      • release2

        protected void release2()
        タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
        オーバーライド:
        release2 クラス内 CommonTagSupport
      • setAction

        public void setAction​(String action)
        【TAG】実行方法を指定します[INSERT/UPDATE/DELETE/MERGE] (初期値:INSERT)。
        パラメータ:
        action - アクション [INSERT/UPDATE/DELETE/MERGE]
      • setUseDelete

        public void setUseDelete​(String useDel)
        【TAG】(jdbcオプション)検索した元のデータを削除するかどうか[true:削除する/false:なにもしない]を指定します(初期値:false)。
        パラメータ:
        useDel - 検索した元のデータを削除するかどうか
      • setMaxRowCount

        public void setMaxRowCount​(String count)
        【TAG】(通常は使いません)データの最大読み込み件数を指定します(初期値:0:[無制限])。
        パラメータ:
        count - 最大件数
      • setStopZero

        public void setStopZero​(String cmd)
        【TAG】検索結果が0件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
        パラメータ:
        cmd - 0件時停止可否 [true:処理を中止する/false:続行する]
      • setDbid

        public void setDbid​(String id)
        【TAG】(通常は使いません)検索する対象のDB接続IDを指定します(初期値:null)。
        パラメータ:
        id - データベース接続ID
      • setTable

        public void setTable​(String table)
        【TAG】検索する対象のテーブル名を指定します(初期値:null)。
        パラメータ:
        table - テーブル名
      • setNames

        public void setNames​(String names)
        【TAG】検索する対象のカラム名をCSV形式で複数指定します(初期値:*)。
        パラメータ:
        names - 引数の名称 (CSV形式)
      • setWhere

        public void setWhere​(String where)
        【TAG】検索する対象を特定するキー条件(where句)を指定します。
        パラメータ:
        where - 検索条件 (where句)
      • setOrderBy

        public void setOrderBy​(String orderBy)
        【TAG】検索する対象の検索順(order by句)を指定します。
        パラメータ:
        orderBy - 検索条件 (order By句)
      • setDbid2

        public void setDbid2​(String id)
        【TAG】登録する対象のDB接続IDを指定します(初期値:null)。
        パラメータ:
        id - データベース接続ID
      • setTable2

        public void setTable2​(String table)
        【TAG】登録する対象のテーブル名を指定します(初期値:null)。
        パラメータ:
        table - テーブル名
      • setNames2

        public void setNames2​(String names)
        【TAG】登録する対象のカラム名をCSV形式で複数指定します(初期値:null)。
        パラメータ:
        names - 引数の名称 (CSV形式)
      • setOmitNames2

        public void setOmitNames2​(String omitNames)
        【TAG】登録対象外のカラム名をCSV形式で複数指定します(初期値:null)。
        パラメータ:
        omitNames - 登録対象外のカラム列 (CSV形式)
      • setWhere2

        public void setWhere2​(String where)
        【TAG】登録する対象を特定するキー条件(where句)を指定します。
        パラメータ:
        where - 検索条件 (where句)
      • setWhereNames2

        public void setWhereNames2​(String names)
        【TAG】登録する対象を特定するキー条件(where句)をCSV形式で複数指定します。
        パラメータ:
        names - 登録条件カラム (where句)作成のためのカラム名(CSV形式)
      • setConstKeys2

        public void setConstKeys2​(String keys)
        【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します。
        パラメータ:
        keys - 固定値カラム (CSV形式)
        関連項目:
        setConstVals2( String )
      • setConstVals2

        public void setConstVals2​(String vals)
        【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します。
        パラメータ:
        vals - 設定値(CSV形式)
        関連項目:
        setConstKeys2( String )
      • setQuotCheck

        public void setQuotCheck​(String flag)
        【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=])。
        パラメータ:
        flag - クォートチェック [true:する/それ以外:しない]
      • setStopError

        public void setStopError​(String flag)
        【TAG】登録処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。
        パラメータ:
        flag - エラー時処理中止 [true:中止する/false:中止しない]
      • setDispError

        public void setDispError​(String flag)
        【TAG】エラー時にメッセージを表示するか[true/false]を設定します。通常はstopErrorと併用(初期値:true)。
        パラメータ:
        flag - [true:表示する/false:表示しない]
      • setFetchSize

        public void setFetchSize​(String size)
        【TAG】(通常は使いません)データのフェッチサイズを指定します (初期値:DB_FETCH_SIZE[=])。
        パラメータ:
        size - フェッチ行数
      • toString

        public String toString()
        このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
        オーバーライド:
        toString クラス内 CommonTagSupport
        戻り値:
        このクラスの文字列表現