MyBatis占位符 #{ } 和 ${ }

相同点:如果传入的是基本类型,那么括号里的变量名称可以随意命名。

             如果传入的是pojo对象,那么括号中的变量名称必须是pojo的属性名称。

不同点:#{}  占位符,占位

             ${}   拼接符,字符串原样拼接

能用#{} 的尽量少用 ${}  (因为${}不能防止sql注入)

如果使用order by 动态参数时需要使用 ${} ,因为使用${} 传的参数不带引号(比如 order by user_id),而通过#{}传的参数会带引号(比如order by “user_id” ) 

如果parameterType是int时,sql语句中必须用 #{}  

 

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

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

</select>

 

<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>

转载于:https://my.oschina.net/xiaozhiwen/blog/1920855

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值