mybatis中使用排序出现的一些问题
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中使用排序出现的一些问题相关推荐
- mybatis多字段排序_解决mybatis中order by排序无效问题
1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111&qu ...
- mybatis与php,浅谈mybatis中的#和$的区别
浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...
- mybatis中的resultMap与resultType、parameterMap与 parameterType的区别
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...
- Mybatis中的#号与$符号的区别
1.#{变量名}可以进行预编译.类型匹配等操作, 2.#{变量名}会转化为jdbc的类型. 3.${变量名}不进行数据类型匹配,直接替换. 4.#方式能够很大程度防止sql注入. 5.$方式无法方式s ...
- mybatis中的#{}和${}区别,和使用场景
mybatis中的#{}和${}区别 1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为ord ...
- myBatis中实用技巧
技巧一: 把查询的字段,查询的条件单独写在一起,使用 <sql></sql>标签定义,使用<include></include>标签引用 <!-- ...
- MyBatis使用PageHelper排序分页
文章目录 MyBatis使用PageHelper排序分页 前言 排序分页 使用PageHelper排序分页 添加PageHelper Spring Boot依赖 新增一个列表查询的方法 使用PageH ...
- mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作
在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...
- 【MybBatis细节篇】MyBatis中#{}和${}的区别
[MybBatis细节篇]MyBatis中#{}和${}的区别 #{} 和 ${} 的区别 #{} 和 ${} 的实例:假设传入参数为 1 #{} 和 ${} 的大括号中的值 单个参数的情形 #{} ...
最新文章
- Windows Forms高级界面组件-快捷菜单
- 8家云计算及安全巨头联合成立云安全服务联盟
- jwt token 附加用户信息_SpringBoot+JWT实现token验证并将用户信息存储到@注解内
- 【Flutter】Flutter 应用创建运行 ( Android Studio 创建 / 运行 Flutter 应用 | 命令行创建 / 运行 Flutter 应用 )
- opencv sobel导数
- 【解决方案】win10连接wifi输入密码之后用户就消失了
- Global.asax或IHttpModule实现屏蔽ip和图片防盗链
- hadoop安装以及Java API操作hdfs
- 安卓手机的a/span的宽高失效
- sklearn.metrics.mean_absolute_error
- python做词云做文本处理_Python生成词云的制作
- iptables联系一
- (2)Mac安装Parallels无法上网
- windows--CMD--命令大全
- (第九章)UI--PS 基础 通道抠图
- 计算机硬件数据统计实验报告,实验二数据统计01
- python 函数enumerate用法
- FME将用SHP数据对栅格影像数据进行裁剪
- ASEMI-QL5010是如何成为工业电磁灶用整流桥的
- cursor 鼠标样式的几种样式
热门文章
- NVIDIA Jetson Xavier NX 开发套件刷机教程
- 前端开发值得推荐的各种资源
- mysql五日均线_五日均线战法图解,简单实用,一跟均线闯天下
- 【Java】蓝桥杯历届试题 题解
- 汽车行业正在积极的拥抱微信小程序
- js 添加和移除onclick事件(通过匿名函数实现)及jquery 移除事件
- imagemagick php windows,php ImageMagick windows下安装教程
- 简单研究用于监控数通设备的Zabbix模板:Template Module Interfaces SNMP与Template Module EtherLike-MIB SNMP
- 工程预算成本测算思路,造价人必备
- Python 爬取酷狗音乐的思路分析