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}' 是原樣 不會自己加引號 所以外面包引號