MyBatis 动态排序:使用 ${} 而不是 #{} 的原因
在MyBatis中,如果要使用动态参数来指定 ORDER BY 的排序关键字,应该使用 '${}',而不是 '#'。因为 '#' 会被解析为一个预编译参数,而 '${}' 则会直接替换为相应的值,这样可以避免 SQL 注入的风险。
例如:
<select id="getUserList" resultType="User">
SELECT * FROM user
<if test="orderBy != null">
ORDER BY ${orderBy}
</if>
</select>
其中,如果 orderBy 的值为 'name DESC',则会生成如下的 SQL 语句:
SELECT * FROM user ORDER BY name DESC
**注意:**直接使用 '${}' 会存在 SQL 注入风险,因此在使用 '${}' 时,需要确保传入的值是安全的,并且对传入的值进行严格的校验,以防止恶意攻击。
原文地址: http://www.cveoy.top/t/topic/n7hK 著作权归作者所有。请勿转载和采集!