1. 程式人生 > >Mybatis SQL語句Like查詢%${value}%與 #{value} 的區別

Mybatis SQL語句Like查詢%${value}%與 #{value} 的區別

方法一:

<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