1. MyBatis中使用parameterType向SQL語句傳參,parameterType後的類型可以是基本類型int,String,HashMap和java自定義類型等。 OK~
2.一般用在xml寫SQL都是用#,如#{param}。但是有時會看到用$的時候,如${param}。
3. 那麼$ 和 # ,有什麼區別呢?
使用#{para}引用參數的時候,Mybatis會把這個參數認爲是一個字符串,如:
<span style="white-space:pre"> </span>update tableName
<set>
tzs = #{blockCount},
tdjz = #{curBlockNum},
tzt = #{storeStatus},
txx = concat(txx, #{fileData}),
lastsj = sysdate
</set>
where tid=#{logID}
使用 ${param}引用參數的時候,Mybatis會把這個參數認爲是sql一部分,不會當成字符串,常用在動態設置表名時使用。如:
<update id="selectId" parameterType="java.util.HashMap" statementType="STATEMENT">
<span style="white-space:pre"> </span> UPDATE ${table}
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span> <set>
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span> columnA = #{zdsbzt}
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span> </set>
<span style="white-space:pre"> </span> WHERE columnB = #{zdjh}
<span style="white-space:pre"> </span> AND columnC IN
<span style="white-space:pre"> </span> <foreach index="index" item="item" collection="list" open="(" close=")" separator=",">
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>${item}
<span style="white-space:pre"> </span> </foreach>
<span style="white-space:pre"> </span> </update>
4.從安全性上考慮,能使用#儘量使用#來傳參,因爲這樣可以有效防止SQL注入的問題。