mybatis直接Xml文件中根据及传入的分页条件进行分页
当在mybatis的xml文件中根据传入的参数进行分页可能错误的习惯的写成
select * from data limit (${pageNum}-1)*#{pageRow} ,#{pageRow}
正确的写法是
select * from data limit (#{pageNum}-1)*#{pageRow} ,#{pageRow}
原因
- #{}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111"
- ${}将传入的数据直接显示生成在sql中。如:order by $user_id,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
-
#方式能够很大程度防止sql注入。
-
$方式无法防止Sql注入。
-
$方式一般用于传入数据库对象,例如传入表名.
-
一般能用#的就别用$.
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

浙公网安备 33010602011771号