mybatis中使用排序出现You have an error in your S$ syntax;, check the manual that coresponds to your IV8u serrer version for the right syntar to use near " as ')

咋一看报错我还以为是我xml中的引号用错了,于是我看了一下我的xml

<when test="search.sidx == 'companyCount'">order by companyCount #{search.sord}</when>

仔细检查了以后发现并没有多写引号

后来查询资料发现MySQL 除了用#{}取值以外,还可以用${}取值

而他们的区别就是#{}是占位符,${}是拼接符,也就是#{}是先预编译成?(即 select * from user where id =?),之后加把值加上去,${}是直接把变量拼接到sql语句上。

那为什么使用#{}排序不行呢?
变量替换后,#{} 对应的变量自动加上单引号 ‘’
变量替换后,${} 对应的变量不会加上单引号 ‘’
这就是问题所在

那我为什么不能在全部的地方都使用${}传值呢?这样还不会出问题,原因是 #{} 能防止sql 注入${} 不能防止sql 注入

最后我在网上查了一些关于什么时候使用哪种方式传值的方式

(1)不论是单个参数,还是多个参数,一律都建议使用注解@Param("")
(2)能用 #{} 的地方就用 #{},不用或少用 ${}
(3)表名作参数时,必须用 ${}。如:select * from ${tableName}
(4)order by 时,必须用 ${}。如:select * from t_user order by ${columnName}
(5)使用 ${} 时,要注意何时加或不加单引号,即 和 ′ {} 和 ' 和′{}'

如果大家觉得我的文章对你有帮助,请点一个赞哦,如果有不足的地方也欢迎大佬指正

mybatis中使用排序出现的一些问题相关推荐

  1. mybatis多字段排序_解决mybatis中order by排序无效问题

    1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111&qu ...

  2. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  3. mybatis中的resultMap与resultType、parameterMap与 parameterType的区别

    Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...

  4. Mybatis中的#号与$符号的区别

    1.#{变量名}可以进行预编译.类型匹配等操作, 2.#{变量名}会转化为jdbc的类型. 3.${变量名}不进行数据类型匹配,直接替换. 4.#方式能够很大程度防止sql注入. 5.$方式无法方式s ...

  5. mybatis中的#{}和${}区别,和使用场景

    mybatis中的#{}和${}区别 1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为ord ...

  6. myBatis中实用技巧

    技巧一: 把查询的字段,查询的条件单独写在一起,使用 <sql></sql>标签定义,使用<include></include>标签引用 <!-- ...

  7. MyBatis使用PageHelper排序分页

    文章目录 MyBatis使用PageHelper排序分页 前言 排序分页 使用PageHelper排序分页 添加PageHelper Spring Boot依赖 新增一个列表查询的方法 使用PageH ...

  8. mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作

    在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...

  9. 【MybBatis细节篇】MyBatis中#{}和${}的区别

    [MybBatis细节篇]MyBatis中#{}和${}的区别 #{} 和 ${} 的区别 #{} 和 ${} 的实例:假设传入参数为 1 #{} 和 ${} 的大括号中的值 单个参数的情形 #{} ...

最新文章

  1. Windows Forms高级界面组件-快捷菜单
  2. 8家云计算及安全巨头联合成立云安全服务联盟
  3. jwt token 附加用户信息_SpringBoot+JWT实现token验证并将用户信息存储到@注解内
  4. 【Flutter】Flutter 应用创建运行 ( Android Studio 创建 / 运行 Flutter 应用 | 命令行创建 / 运行 Flutter 应用 )
  5. opencv sobel导数
  6. 【解决方案】win10连接wifi输入密码之后用户就消失了
  7. Global.asax或IHttpModule实现屏蔽ip和图片防盗链
  8. hadoop安装以及Java API操作hdfs
  9. 安卓手机的a/span的宽高失效
  10. sklearn.metrics.mean_absolute_error
  11. python做词云做文本处理_Python生成词云的制作
  12. iptables联系一
  13. (2)Mac安装Parallels无法上网
  14. windows--CMD--命令大全
  15. (第九章)UI--PS 基础 通道抠图
  16. 计算机硬件数据统计实验报告,实验二数据统计01
  17. python 函数enumerate用法
  18. FME将用SHP数据对栅格影像数据进行裁剪
  19. ASEMI-QL5010是如何成为工业电磁灶用整流桥的
  20. cursor 鼠标样式的几种样式

热门文章

  1. NVIDIA Jetson Xavier NX 开发套件刷机教程
  2. 前端开发值得推荐的各种资源
  3. mysql五日均线_五日均线战法图解,简单实用,一跟均线闯天下
  4. 【Java】蓝桥杯历届试题 题解
  5. 汽车行业正在积极的拥抱微信小程序
  6. js 添加和移除onclick事件(通过匿名函数实现)及jquery 移除事件
  7. imagemagick php windows,php ImageMagick windows下安装教程
  8. 简单研究用于监控数通设备的Zabbix模板:Template Module Interfaces SNMP与Template Module EtherLike-MIB SNMP
  9. 工程预算成本测算思路,造价人必备
  10. Python 爬取酷狗音乐的思路分析