mybatis直接Xml文件中根据及传入的分页条件进行分页

当在mybatis的xml文件中根据传入的参数进行分页可能错误的习惯的写成

select * from data limit (${pageNum}-1)*#{pageRow} ,#{pageRow}

正确的写法是

select * from data limit (#{pageNum}-1)*#{pageRow} ,#{pageRow}

原因

  1. #{}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111"
  2. ${}将传入的数据直接显示生成在sql中。如:order by $user_id,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
  3. #方式能够很大程度防止sql注入。

  4. $方式无法防止Sql注入。

     

  5. $方式一般用于传入数据库对象,例如传入表名.

  6. 一般能用#的就别用$.

    MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

 
posted @ 2022-06-24 17:32  EM_pupil  阅读(1005)  评论(0)    收藏  举报