mybatis中 ${}和#取值小记(Parameter index out of range)
mybatis mapperxml文件中有两种取值法.${}和#{}
$的是原样,#的是取值并转成指定?#{ele1,jdbcType=VARCHAR}
有个坑,
错误的写法
<if test="searchName!=null">
<if test="searchName!=''">
and p.name like CONCAT('%','#{searchName,jdbcType=VARCHAR}','%' )
</if>
</if>
正确的写法1
<if test="searchName!=null">
<if test="searchName!=''">
and p.name like CONCAT('%','${searchName}','%' )
</if>
</if>
正确的写法2
<if test="searchName!=null">
<if test="searchName!=''">
and p.name like CONCAT('%',#{searchName,jdbcType=VARCHAR},'%' )
</if>
</if>
#取值时会把值转成'值',这时如果外面又加‘’ 也就是 '#{ele,jdbcType=VARCHAR}' 就会变成 ''ele'' 2个引号 '${ele}' 是原样 不会自己加引号 所以外面包引号