MyBatis佔位符 #{ } 和 ${ }

相同點:若是傳入的是基本類型,那麼括號裏的變量名稱能夠隨意命名。sql

             若是傳入的是pojo對象,那麼括號中的變量名稱必須是pojo的屬性名稱。對象

不一樣點:#{}  佔位符,佔位字符串

             ${}   拼接符,字符串原樣拼接get

能用#{} 的儘可能少用 ${}  (由於${}不能防止sql注入)string

若是使用order by 動態參數時須要使用 ${} ,由於使用${} 傳的參數不帶引號(好比 order by user_id),而經過#{}傳的參數會帶引號(好比order by 「user_id」 ) test

若是parameterType是int時,sql語句中必須用 #{}  變量

 

<select id="findUserByUserName" parameterType="string" resultType="project.book.pojo.User">List

select * from User where username like '%${value}%'select

</select>sql語句

 

<select id="findById"  parameterType="int"  resultType="project.book.pojo.User">     

 select * from User where id=#{id}   

</select>

 

<select id="getUserList" resultType="project.book.pojo.User">         SELECT * from User         <if test="id !=null">             ORDER BY ${id}         </if>  </select>

相關文章
相關標籤/搜索