IBatisの$と#の違いと注意事項
<isNotEmpty prepend=" AND " property="TAPPING_MARKS">
TAPPING_MARK IN (#TAPPING_MARKS#)
</isNotEmpty>
#パッケージの値は、印刷されたSQLステートメントの引用符を文字列の値として自動的に折り返します。パッケージの値は、印刷されたSQLステートメントの値の
TAPPING_MARK IN ('AN0691D2')
ままになります。単一引用符は自動的に折り返されません。
TAPPING_MARK IN (AN0691D2)
この種の問題は、注意しない場合
、またはバックグラウンドでパラメーターを文字列として手動で引用符で囲むTAPPING_MARK IN (''AN0691D2'')
場合に発生し、エラーになります。
DEFECT_CNAME = DEFECT_CNAME.replaceAll(" ", "").replaceAll(",", ",").replaceAll(",", "','");
DEFECT_CNAME = "'" + DEFECT_CNAME + "'";