org.opengion.hayabusa.taglib

## クラス TableUpdateParamTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.opengion.hayabusa.taglib.CommonTagSupport
      - - org.opengion.hayabusa.taglib.TableUpdateParamTag

- すべての実装されたインタフェース:
    java.io.Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally

      public class TableUpdateParamTag
      extends CommonTagSupport

       TableUpdateTag にパラメーターを渡す為のタグクラスです。

       汎用的なデータベース登録処理を行えるタグ tableUpdate タグを新規作成します。
       これは、具体的なSLQを作成する tableUpdateParam タグと組み合わせて使用できます。
       tableUpdate タグは、queryType に JDBCTableUpdate を指定します。基本的にこれだけ
       です。tableUpdateParam では、sqlType に、INSERT,COPY,UPDATE,MODIFY,DELETE の
       どれかを指定する事で、SQL文のタイプを指定します。COPY,MODIFY は command と
       関連を持たす為に追加しているタイプで、INSERTやUPDATE と同じ処理を行います。
       tableUpdateParam の table には、作成したい SQL のテーブルを指定します。
       where 属性は、検索結果の DBTableModel の更新時に使用する条件を指定します。

  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:tableUpdate command="{@command}" queryType="JDBCTableUpdate" >
                    <og:tableUpdateParam
                        sqlType       = "{@sqlType}"       // INSERT,COPY,UPDATE,MODIFY,DELETE
                        table         = "{@TABLE_NAME}"    // 処理対象のテーブル名
                        names         = "{@names}"         // 処理対象のカラム名
                        omitNames     = "{@omitNames}"     // 処理対象外のカラム名
                        where         = "{@where}"         // 処理対象を特定するキー
                        whereNames    = "{@whereNames}"    // 処理対象を特定するキー条件(where句)をCSV形式
                        constKeys     = "{@constKeys}"     // 処理カラム名の中の固定情報カラム名
                        constVals     = "{@constVals}"     // 処理カラム名の中の固定情報設定値
                        asNames       = "{@asNames}"       // 別名を付けたカラム名(select A as B from TBL の B を指定)
                        orgNames      = "{@orgNames}"      // tableの実際のカラム名(select A as B from TBL の A を指定)
                        funcKeys      = "{@funcKeys}"      // 関数等を設定するカラム名
                        funcVals      = "{@funcVals}"      // 関数等の設定値
                        logicalDelete = "{@logicalDelete}" // sqlTypeがDELETEの場合にもUPDATE文を発行
                    />
                 </og:tableUpdate>

         ●body：なし

         ●Tag定義：
           <og:tableUpdateParam
               sqlType          ○【TAG】BODY部に書かれている SQLタイプを指定します(必須)
               table            ○【TAG】処理対象のテーブル名を指定します(必須)
               names              【TAG】処理対象のカラム名をCSV形式で複数指定します
               omitNames          【TAG】処理対象外のカラム名をCSV形式で複数指定します
               where              【TAG】処理対象を特定するキー条件(where句)を指定します
               whereNames         【TAG】処理対象を特定するキー条件(where句)をCSV形式で複数指定します
               constKeys          【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します
               constVals          【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します
               funcKeys           【TAG】関数等を設定するカラム名をCSV形式で複数指定します
               funcVals           【TAG】関数等の設定値をCSV形式で複数指定します
               asNames            【TAG】別名を付けたカラム名(select A as B from TBL の B を指定)をCSV形式で複数指定します
               orgNames           【TAG】tableの実際のカラム名(select A as B from TBL の A を指定)をCSV形式で複数指定します
               quotCheck          【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=true])
               constObjKey        【TAG】固定情報カラムの処理オブジェクトを特定するキーを設定します(初期値:SYSTEM_ID)
               logicalDelete      【TAG】sqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します(初期値:false)
               caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null)
               caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null)
               caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない)
               caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない)
               caseIf             【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない)
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           />

         ●使用例
            ・【entry.jsp】
                 <og:tableUpdate command="{@command}" queryType="JDBCTableUpdate" >
                    <og:tableUpdateParam
                       sqlType  = "{@sqlType}"
                       table    = "{@MEM.TABLE_NAME}"
                       where    = "ROWID = [ROWID]"
                    />
                 </og:tableUpdate>

  機能分類
    ＤＢ登録
  変更履歴:
    3.8.8.0 (2007/12/22) 新規作成, 4.1.2.0 (2008/03/12) 実装の大幅な修正
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static java.lang.String` | `SQL_TYPE` sqlType属性に設定できる値 "|INSERT|COPY|UPDATE|MODIFY|DELETE|"

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

      `BR, BUFFER_MIDDLE, CR`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.BodyTagSupport

      `bodyContent`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.TagSupport

      `id, pageContext`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.BodyTag

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.IterationTag

      `EVAL_BODY_AGAIN`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.Tag

      `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

  - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `TableUpdateParamTag()` デフォルトコンストラクター

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setAsNames(java.lang.String keys)` 【TAG】別名を付けたカラム名(select A as B from TBL の B を指定)をCSV形式で複数指定します。
    `void` | `setConstKeys(java.lang.String keys)` 【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します。
    `void` | `setConstObjKey(java.lang.String key)` 【TAG】固定情報カラムの処理オブジェクトを特定するキーを設定します(初期値:SYSTEM_ID)。
    `void` | `setConstVals(java.lang.String vals)` 【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します。
    `void` | `setFuncKeys(java.lang.String keys)` 【TAG】関数等を設定するカラム名をCSV形式で複数指定します。
    `void` | `setFuncVals(java.lang.String vals)` 【TAG】関数等の設定値をCSV形式で複数指定します。
    `void` | `setLogicalDelete(java.lang.String flag)` 【TAG】sqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します(初期値:false)。
    `void` | `setNames(java.lang.String nms)` 【TAG】処理対象のカラム名をCSV形式で複数指定します。
    `void` | `setOmitNames(java.lang.String nms)` 【TAG】処理対象外のカラム名をCSV形式で複数指定します。
    `void` | `setOrgNames(java.lang.String keys)` 【TAG】tableの実際のカラム名(select A as B from TBL の A を指定)をCSV形式で複数指定します。
    `void` | `setQuotCheck(java.lang.String flag)` 【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=])。
    `void` | `setSqlType(java.lang.String type)` 【TAG】BODY部に書かれている SQLタイプを指定します。
    `void` | `setTable(java.lang.String tbl)` 【TAG】処理対象のテーブル名を指定します。
    `void` | `setWhere(java.lang.String wr)` 【TAG】処理対象を特定するキー条件(where句)を指定します。
    `void` | `setWhereNames(java.lang.String wrnm)` 【TAG】処理対象を特定するキー条件(where句)をCSV形式で複数指定します。
    `java.lang.String` | `toString()` このオブジェクトの文字列表現を返します。

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

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doAfterBody, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheck`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.BodyTagSupport

      `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.TagSupport

      `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue`

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

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

    - ### インタフェースから継承されたメソッド javax.servlet.jsp.tagext.Tag

      `getParent, setPageContext, setParent`

- - ### フィールドの詳細

    - #### SQL_TYPE

          public static final java.lang.String SQL_TYPE

      sqlType属性に設定できる値 "|INSERT|COPY|UPDATE|MODIFY|DELETE|"
      関連項目:
        定数フィールド値

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

    - #### TableUpdateParamTag

          public TableUpdateParamTag()

      デフォルトコンストラクター
      変更履歴:
        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

      Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
      定義:
        `doStartTag` インタフェース内 `Tag`
      オーバーライド:
        `doStartTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示( SKIP_BODY )
      変更履歴:
        5.5.1.9 (2012/04/19) エラーチェックを先に行います。, 6.3.4.0 (2015/08/01) caseKey,caseVal,caseNN,caseNull,caseIf 属性対応, 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"／＞" 止めを、"＞" に変更します)。

    - #### doEndTag

          public int doEndTag()

      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
        `doEndTag` インタフェース内 `Tag`
      オーバーライド:
        `doEndTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示
      変更履歴:
        4.3.7.0 (2009/06/01) 論理削除対応, 6.3.4.0 (2015/08/01) caseKey,caseVal,caseNN,caseNull,caseIf 属性対応

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `CommonTagSupport`
      変更履歴:
        4.3.7.0 (2009/06/01) logicalDelete属性追加, 5.5.1.9 (2012/04/19) asNames、orgNames、funcKeys、funcVals属性追加, 5.5.8.5 (2012/11/27) 処理対象を特定するCSV形式のカラム名

    - #### setSqlType

          public void setSqlType(java.lang.String type)

      【TAG】BODY部に書かれている SQLタイプを指定します。
      パラメータ:
        `type` - SQLタイプ [INSERT/COPY/UPDATE/MODIFY/DELETE]
      説明:
        SQLタイプは、INSERT,COPY,UPDATE,MODIFY,DELETE の中から指定する 必要があります。これらは、内部に書かれるSQLの形式を指定するのに使用します。 内部処理は、DBTableModelの改廃コード(A,C,D)に対して使用される SQL を選択する場合の情報に使用されます。 なお、COPY と MODIFY は、command で指定できる簡易機能として用意しています。 上位の TableUpdateTag の sqlType 属性 と同じsqlType 属性の場合のみ、SQL文を 合成・出力します。(上位のsqlTypeがnullの場合は、無条件実行します。) 指定のタイプが、異なる場合は、なにも処理を行いません。

    - #### setTable

          public void setTable(java.lang.String tbl)

      【TAG】処理対象のテーブル名を指定します。
      パラメータ:
        `tbl` - テーブル名
      関連項目:
        `setNames( String )`, `setWhere( String )`, `setSqlType( String )`
      説明:
        テーブル名を指定することで、sqlTypeに応じた QUERYを生成することが出来ます。 生成する場合のカラムを特定する場合は、names 属性で指定できます。 また、WHERE条件は、where属性で指定します。

    - #### setNames

          public void setNames(java.lang.String nms)

      【TAG】処理対象のカラム名をCSV形式で複数指定します。
      パラメータ:
        `nms` - カラム名 (CSV形式)
      関連項目:
        `setTable( String )`, `setOmitNames( String )`
      説明:
        生成するQUERYのカラム名をCSV形式(CSV)で複数指定します。 指定がない場合は、DBTableModel の全カラム(※)を使用して、QUERYを構築します。 一般に、テーブル結合してDBTableModelを構築した場合は、登録すべきカラムを 指定する必要があります。 (※)正確には、DBTableModel の全カラムのうち、ROWID,ROWNUM,WRITABLE カラムは 無視します。 分解方法は、通常のパラメータ取得後に、CSV分解します。
      変更履歴:
        3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。

    - #### setOmitNames

          public void setOmitNames(java.lang.String nms)

      【TAG】処理対象外のカラム名をCSV形式で複数指定します。
      パラメータ:
        `nms` - カラム名 (CSV形式)
      関連項目:
        `setTable( String )`, `setNames( String )`
      説明:
        生成するQUERYのカラム名に指定しないカラム名をCSV形式(CSV)で複数指定します。 指定がない場合は、DBTableModel の全カラム(※)を使用して、QUERYを構築します。 テーブル結合などで、処理したくないカラム数の方が少ない場合に、names ですべてを 指定するより少ない記述ですみます。 (※)正確には、DBTableModel の全カラムのうち、ROWID,ROWNUM,WRITABLE カラムは 無視します。

    - #### setWhere

          public void setWhere(java.lang.String wr)

      【TAG】処理対象を特定するキー条件(where句)を指定します。
      パラメータ:
        `wr` - 検索条件 (where句)
      説明:
        生成するQUERYのwhere 句を指定します。通常の WHERE 句の書き方と同じで、 DBTableModelの値を割り当てたい箇所に[カラム名] を記述します。 文字列の場合、設定値をセットするときに、シングルコーテーションを 使用しますが、[カラム名]で指定する場合は、その前後に、(')シングル コーテーションは、不要です。 {@XXXX}変数を使用する場合は、パース時に固定文字に置き換えられる為、 文字列指定時の(')シングルコーテーションが必要になります。 ※ 5.5.8.5 (2012/11/27) whereNames 属性と併用した場合は、where が、and を付けて、文字列結合されます。 例：FGJ='1' and CLM=[CLM] and SYSTEM_ID in ([SYSID],'**') and KBSAKU='{@KBSAKU}'

    - #### setWhereNames

          public void setWhereNames(java.lang.String wrnm)

      【TAG】処理対象を特定するキー条件(where句)をCSV形式で複数指定します。
      パラメータ:
        `wrnm` - 検索条件カラム (where句)作成のためのカラム名(CSV形式)
      説明:
        生成するQUERYのwhere 句を指定する方法として、複数のカラム名をCSV指定し、内部で KEY=[KEY] 文字列を作成します。 ここでは、カラム名は、データベースのカラム名と同じで、かつ、DBTableModel にも 同じカラムのデータが存在していること、という条件付きとします。 また、where 条件との併用を行いますが、こちらの条件が先に使用され、where 条件は、 and を付けて、文字列結合されます。 例： CLM,SYSTEM_ID,KBSAKU ⇒ CLM=[CLM] and SYSTEM_ID=[SYSTEM_ID] and KBSAKU=[KBSAKU]
      変更履歴:
        5.5.8.5 (2012/11/27) 新規追加

    - #### setConstKeys

          public void setConstKeys(java.lang.String keys)

      【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します。
      パラメータ:
        `keys` - 固定値カラム (CSV形式)
      関連項目:
        `setConstVals( String )`
      説明:
        names 属性のカラムや table 属性より、QUERYを作成して、DBTableModelの値を 割り当てる場合、DBTableModelの値ではなく、外部から指定した固定値を 割り当てたい場合に、そのカラム名をCSV形式(CSV)で複数指定します。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setConstVals

          public void setConstVals(java.lang.String vals)

      【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します。
      パラメータ:
        `vals` - 設定値(CSV形式)
      関連項目:
        `setConstKeys( String )`
      説明:
        names 属性のカラムや table 属性より、QUERYを作成して、DBTableModelの 値を割り当てる場合、DBTableModelの値ではなく、外部から指定した固定値を 割り当てたい場合に、そのカラム名に対応する設定値をCSV形式(CSV)で 複数指定します。ここで指定する設定値は、constKeys 属性と対応させます。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setFuncKeys

          public void setFuncKeys(java.lang.String keys)

      【TAG】関数等を設定するカラム名をCSV形式で複数指定します。
      パラメータ:
        `keys` - 関数カラム (CSV形式)
      関連項目:
        `setFuncVals( String )`
      説明:
        constVals 属性で設定する値は、必ずシングルクオートが付与されます。 その場合、関数などを設定したい場合でも、文字列として設定しようとします。 ここで指定するカラム名(funcKeys)自身は、constKeys と同じ書式です。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。
      変更履歴:
        5.5.1.9 (2012/04/19) 新規追加

    - #### setFuncVals

          public void setFuncVals(java.lang.String vals)

      【TAG】関数等の設定値をCSV形式で複数指定します。
      パラメータ:
        `vals` - 関数設定値 (CSV形式)
      関連項目:
        `setFuncKeys( String )`
      説明:
        funcKeys 属性に対応する 関数などの設定値を割り当てます。 constVals 属性との違いは、funcVals の設定値は、そのままの形で、SQL文の 構築に使われます。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。
      変更履歴:
        5.5.1.9 (2012/04/19) 新規追加

    - #### setAsNames

          public void setAsNames(java.lang.String keys)

      【TAG】別名を付けたカラム名(select A as B from TBL の B を指定)をCSV形式で複数指定します。
      パラメータ:
        `keys` - 別名カラム (CSV形式)
      関連項目:
        `setOrgNames( String )`
      説明:
        SELECT 文を記述したとき、別名を付けていたり、SELECTしたテーブルと別のテーブルに DBTableModelの値を書き込む場合、DBTableModel の持っているカラム名と、実際に 書き込むカラム名が異なります。そのようなケースに、元の別名カラムを指定します。 orgNames属性の並び順と、asNames属性の並び順を合わせておく必要があります。 このカラム名は、DBTableModel には持っているが、テーブル側には持っていない値 なので、内部的に omitNames 属性に値を設定します。利用者は、omitNames に 書き込む必要はありません。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。
      変更履歴:
        5.5.1.9 (2012/04/19) 新規追加

    - #### setOrgNames

          public void setOrgNames(java.lang.String keys)

      【TAG】tableの実際のカラム名(select A as B from TBL の A を指定)をCSV形式で複数指定します。
      パラメータ:
        `keys` - 実カラム (CSV形式)
      関連項目:
        `setAsNames( String )`
      説明:
        SELECT 文を記述したとき、別名を付けていたり、SELECTしたテーブルと別のテーブルに DBTableModelの値を書き込む場合、DBTableModel の持っているカラム名と、実際に 書き込むカラム名が異なります。そのようなケースに、テーブルの実カラムを指定します。 orgNames属性の並び順と、asNames属性の並び順を合わせておく必要があります。 このカラム名は、DBTableModel には持っていませんが、テーブル側には持っている値 なので、このカラム名で、SQL文を構築します。 UPDATE TBL SET A=[B] WHERE … となります。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。
      変更履歴:
        5.5.1.9 (2012/04/19) 新規追加

    - #### setQuotCheck

          public void setQuotCheck(java.lang.String flag)

      【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=])。
      パラメータ:
        `flag` - クォートチェック [true:する/それ以外:しない]
      関連項目:
        `SystemData.USE_SQL_INJECTION_CHECK`
      説明:
        ＳＱＬインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに 渡す文字列にシングルクォート(') を許さない設定にすれば、ある程度は防止できます。 数字タイプの引数には、 or 5=5 などのシングルクォートを使用しないコードを埋めても、 数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、 ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。 (') が含まれていたエラーにする(true)／かノーチェックか(false)を指定します。 (初期値:システム定数のUSE_SQL_INJECTION_CHECK[=])。

    - #### setConstObjKey

          public void setConstObjKey(java.lang.String key)

      【TAG】固定情報カラムの処理オブジェクトを特定するキーを設定します(初期値:SYSTEM_ID)。
      パラメータ:
        `key` - 固定カラムキー
      説明:
        固定情報カラム をシステム単位にJavaクラスで管理できます。 そのクラスオブジェクトは、org.opengion.hayabusa.db.DBConstValue インターフェースを 継承した、plugin クラスになります。 そのクラスを特定するキーワードを指定します。 初期値は、SYSTEM_ID でシステム単位にクラスを作成します。 もし、他のシステムと共通の場合は、継承だけさせることも可能です。 対応したDBConstValueクラスがプラグインとして存在しない場合は、 システムリソースのDEFAULT_CONST_CLASSで指定されたクラスが利用されます。 固定情報カラムを使用しない場合は、constObjKey="" をセットしてください。 初期値は、SYSTEM_ID です。
      変更履歴:
        6.9.8.0 (2018/05/28) 固定情報カラムを使用しない場合は、constObjKey="" をセット。

    - #### setLogicalDelete

          public void setLogicalDelete(java.lang.String flag)

      【TAG】sqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します(初期値:false)。
      パラメータ:
        `flag` - 論理削除可否 [true:UPDATE文/false:DELETE文]
      説明:
        sqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します。 trueが指定された場合は、DELETE文ではなく、UPDATE文が発行されます。 falseが指定された場合は、DELETE文が発行されます。 さらに論理削除を行う場合、org.opengion.hayabusa.db.DBConstValue インターフェースに 定義されている、getLogicalDeleteKeys()及びgetLogicalDeleteValsを実装することで、 論理削除する際のフラグの更新方法を統一的に管理することが可能になります。 初期値は、false(物理削除する)です

    - #### toString

          public java.lang.String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `CommonTagSupport`
      戻り値:
        このクラスの文字列表現
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.