#{}与${}取值符号的区别
示例一:
如下所示,若传入参数 id=1 则:
select * from person where id = #{id} 传入参数后可以看成 select * from person where id =‘1’;
select * from person where id = ${value} 传入参数后可以看成 select * from person where id = 1;
所以
#{id}: 所带的参数自动加上单引号
${id}: 所带的参数无单引号
<select id="selectPersonById1" resultType="person" parameterType="int">
select * from person where id = #{id}
</select>
<select id="selectPersonById2" resultType="person" parameterType="int">
select * from person where id = ${value}
</select>
示例二:
根据 #{}与 $ {} 的区别,当条件为 like 条件时:
对于 #{name} ,假设参数为 王 ,那么在参入该参数时应为 mapper.selectPersonAll(“%王%”)
对于 %${value}% ,传入参数无需加入%,直接传入 王 即mapper.selectPersonAll(“王”)
<select id="selectPersonById1" resultType="person" parameterType="int">
select * from person where name like #{name}
</select>
<select id="selectPersonById2" resultType="person" parameterType="int">
select * from person where name= '%${value}%'
</select>
#{}与${}取值符号的取值
1、当 parameterType 的类型为基本类型与 String 时
#{任意值}:大括号中的值可以为任意值
${value}:大括号中的值只能为 value
2、当 parameterType 的类型为对象类型时
#{属性值}:大括号中的值必须为该对象包含的属性
${属性值}:大括号中的值必须为该对象包含的属性