Mybatis使用order by语句
今天在公司写代码的时候,想到有这样的需求,就是点击不同的按钮,跳转到同一个页面,但根据不同的条件对查询出来的结果进行排序。因为有六七种情况,所以我不可能相同的代码重复写六七遍,仅仅是查询条件不同。
所以自然而然的就想到传入一个参数给sql语句,然后使用order by进行排序。
因为之前一直使用#运算符,所以一如既往,使用#运算符就干,然鹅结果却是不起作用,看了一下输出日志,发现是这样输出的
select * from tableName order by ?;
parameter:columnName(String)
看看没啥毛病啊,实在不理解,就去查阅资料,发现和$、#运算符有关。
(1)使用#运算符,Mybatis会将传入的对象当成一个字符串,在进行变量替换时会加上引号,所以上面的order by语句,替换后就变成了下面的样子
select * from tableName order by 'columnName';
虽然不会报错,但也不能正确排序
(2)使用$运算符,Mybatis不会进行预编译,直接把值传进去,无法防止sql注入,当我们需要传字段的名称时,可以考虑使用$符号,但在后台需要进行数据校验,才能在一定程度上防止sql注入。
sql注入
比如一个登陆的sql语句如下
select * from user where user_id = 'CodeTiger' and password = '123456';
当我们输入CodeTiger 123456的时候,自然能登陆成功。
然鹅当我们输入CodeTiger’;–,不论输入什么密码,都能够正确登陆,因为此时sql语句变成了下面的样子
select * from user where user_id = 'CodeTiger';--' and password = '123456';
后面的密码校验部分被注释了。这就是一个sql注入的小例子,当然实际中远远不止这么low,只是为了说明sql注入是什么。
Mybatis使用order by语句相关推荐
- mybatis多字段排序_解决mybatis中order by排序无效问题
1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111&qu ...
- MySQL Order by 语句用法与优化详解
Order by语句是用来排序的,经常我们会使用到Order by来进行排序,下面我给大家来讲讲Order by用法与优化排序,有需要的同学可参考 MySQL Order By keyword是用来给 ...
- Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项
Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...
- 从SQL SERVER 2000到SQL SERVER 2005 视图中存在 ORDER BY 语句的完全解决方案
首先要看微软的一个官方文章: http://support.microsoft.com/kb/926292/ 文章中提到的补丁程序并未公开,需要与微软联系,工程师会给你下载地址和安装密码.我这里有一个 ...
- mysql 优化代码_MySQL Order by 语句优化代码详解
Order by语句是用来排序的,经常我们会使用到Order by来进行排序,下面我给大家来讲讲Order by用法与优化排序,有需要的同学可参考 MySQL Order By keyword是用来给 ...
- SQL注入:3、无权读取information_schema库和拒绝union、order by语句
3.无权读取information_schema库和拒绝union.order by语句 information_schema: 3. information_schema: 想要查询这张表,必须是r ...
- mybatis直接执行sql语句后续之一
在上一篇文章中,我们提到了让mybatis直接执行sql语句. http://xiabin1235910-qq-com.iteye.com/blog/1748886 接下来介绍在上一篇文章的基础上,我 ...
- mysql order by 语句_Mysql优化order by语句的方法详解
本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...
- MySQL——优化ORDER BY语句
本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的朋友们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引顺 ...
- java day55【 Mybatis 连接池与事务深入 、 Mybatis 的动态 SQL 语句、 Mybatis 多表查询之一对多 、 Mybatis 多表查询之多对多】...
第1章 Mybatis 连接池与事务深入 1.1 Mybatis 的连接池技术 1.1.1 Mybatis 连接池的分类 1.1.2 Mybatis 中数据源的配置 1.1.3 Mybatis 中 D ...
最新文章
- 【Data】数据结构之C++程序设计(1)
- Centos普通用户提权至ROOT
- PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决
- ACM之【运算符重载结合STL】
- android分辨率对应关系,android各dpi与分辨率的对应关系
- TransactionAwareDataSourceProxy
- SpringCloud Hoxton版微服务-RestTempalte + @LoadBlanced 实现负载均衡
- 手把手教你写一个spring IOC容器
- 大数据之-Hadoop之HDFS的API操作_修改文件的名称---大数据之hadoop工作笔记0060
- 简单的dp(dp专题)
- ARC对象内存管理以及强弱指针
- NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头
- XenCenter 创建 New Storage Repository
- c#实现短信发送程序
- MPEG Audio 简述
- 数组的参数必须是 ByRef
- 有名管道----mkfifo函数的使用
- R155附录5 Part A
- 设计模式(10)——外观模式
- 调度工具(ETL+任务流)