最新消息:从今天开始,做一个有好习惯的人。

mybaits参数排序

数据库 迷路的老鼠 2483浏览 2评论

今天碰到一很傻缺的问题,以前没怎么注意,今天用到很多动态排序,对,ORDER – BY,说的就是你。

突然我就傻缺了,怎么调试出来的数据都不对。查看mysql的执行记录。

1
WHERE is_deleted = 0 ORDER - BY 'viewCount' 'desc' LIMIT 0,10

why? 喂,哪里来的引号?

赶快度娘,原来我的参数用的是#{xxx},默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER – BY,你可以这样来使用:

1
ORDER - BY ${columnName}

这里MyBatis不会修改或转义字符串。

 

重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

u=2622320118,1515445201&fm=21&gp=0

转载请注明:迷路的老鼠 » mybaits参数排序

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 一个小符号~程序世界真是严谨~
    wa10年前 (2015-01-02)回复
    • 其实现实世界也是很严禁的,比如饿了就要吃饭。
      admin10年前 (2015-01-04)回复