Mybatis SQL語句Like查詢%${value}%與 #{value} 的區別
阿新 • • 發佈:2019-01-23
方法一:
<select id="findUserById" parameterType="int" resultType="fy.po.User">
select * from user where username like '%${value}%' ;
</select>
${value}必須是value
呼叫時:sqlSession.selectList("test.findUserByUsername", "張");
方法二:
<select id="findUserById" parameterType="int" resultType="fy.po.User">
select * from user where username like #{value} ;
</select>
呼叫時:sqlSession.selectList("test.findUserByUsername", "%張%");
#{}和${}
#{}表示一個佔位符號,通過#{}可以實現preparedStatement向佔位符中設定值,自動進行java型別和jdbc型別轉換,#{}可以有效防止sql注入。 #{}可以接收簡單型別值或pojo屬性值。 如果parameterType傳輸單個簡單型別值,#{}括號中可以是value或其它名稱。
${}表示拼接sql串,通過${}可以將parameterType 傳入的內容拼接在sql中且不進行jdbc型別轉換, ${}可以接收簡單型別值或pojo屬性值,如果parameterType傳輸單個簡單型別值,${}括號中只能是value。