最近配合miniui 排序,发现用${} 可以直接使用 sortField、sortOrder 里面的值进行排序,而用#{} 就不行了
查了下 这两个区别:
1.#{} 传参,sql语句解析会加上"",
例如 select * from report where orgname= #{orgname}, 结果会是 select * fromreport whereorgname= ‘花果山’
2.${} 传参,mybatis不会修改或转义字符串, select * from report order by ${sortField}, 结果会是 select * fromreport order by orgname.
#{}传参能防止sql注入,mybatis会创建preparedstatement 并以它为背景设置安全的值
使用${field}不应该允许用户输入这些field,或者通常自行转义并检查。