一、#{}使用
1、 #{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?(jdbc中sql语句的参数)
2、使用规范:使用占位符#{}可以有效防止sql注入,在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或则pojo属性值,如果parameterType传输的时单个简单类型值,#{}括号中可以是任何名称。
3、使用范例
<select id="findUserByid" parameterType="int" resultType="com.jz.po.MyUser">
select *
from myuser
where id=#{id}
</select>
二、${}使用
1、${}直接将parameterType传入的内容拼接在sql中且不进行jdbc类型转换
2、${}可以接收简单类型值或则pojo属性值,如果parameterType传输的时单个简单类型值,${}括号中只能是value。使用${}不能防止sql注入。
<select id="findUserByid" parameterType="int" resultType="com.jz.po.MyUser">
select *
from myuser
where username like '%${value}%'
</select>
3、直观理解
输入的参数 id="Jiangnan"
#{id}自动识别并进行类型转换 id="Jiangnan"
${id}只进行简单拼接,不进行类型转换 id=Jiangnan