MyBatisで#と$の違い
MyBatis3.0.4で#と$の違いについてです。
${aaa}・・・aaaの値をそのまま出力する
#{aaa}・・・エスケープや、文字列の場合はシングルクォーテーションで囲ってくれる
上記の違いがあります。
<select id="selectA" parameterType="map" resultType="map">
SELECT AA, BB
FROM ${schema}.TB_A AS A
WHERE A.COLUMN = #{id}
</select>
上記のようにスキーマなどの場合はシングルクォーテーションで囲まれると困るので、$にするのが正しいです。
parameterTypeがmapなので、Java側ではMapを渡します。
resultTypeもmapなので、Java側では戻り値もMapです。
以下、Java側のイメージです。
Map cond = new HashMap<String, String>(); cond.put("schema","~~"); cond.put("id", "~~"); Map ret = (Map<String, String>) session.selectOne("selectA", cond);
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント