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>

相关文章
相关标签/搜索