前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Order By 排序条件中带参数的写法(Oracle数据库、MyBatis)

Order By 排序条件中带参数的写法(Oracle数据库、MyBatis)

作者头像
微风-- 轻许--
发布于 2022-04-13 00:54:31
发布于 2022-04-13 00:54:31
3.5K00
代码可运行
举报
文章被收录于专栏:java 微风java 微风
运行总次数:0
代码可运行

sortWay 是参数。 当sortWay 为 llpx 就 ORDER BY FORMAT ASC,为 btypx 就ORDER BY BID DESC ,为 zhpx 就 ORDER BY FORMAT ASC,BID DESC

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<select id="selectXXX" parameterType="Map" resultMap="XXXXResultMap">
		SELECT 
			XXX,XXX			
		FROM TB_XXX 
		<where>
		    <if test="id != null and id != ''">
		    	AND ID = #{id}
		    </if>
		    <if test="account != null and account != ''">
		    	AND ACCOUNT = #{account}
		    </if>
		    <if test="state != null and state != '' and state.code != null and state.code != ''">
		    	AND STATE = #{state.code}
		    </if>
	    </where>
	    <order>
	    	<if test=" sortWay != null and sortWay == 'llpx'">
		    	ORDER BY FORMAT ASC
		    </if>
		    <if test=" sortWay != null and sortWay == 'btypx'">
		    	ORDER BY BID DESC 
		    </if>
		    <if test=" sortWay != null and sortWay == 'zhpx'">
		    	ORDER BY FORMAT ASC,BID DESC 
		    </if>
	    </order>
	</select>

我本来觉得上面方法是可以的,但是不知道什么地方有问题运行会说在<order> 位置就该是<mapper>标签了。

希望有人解决了给我说下这个方法是不是可以用。

最后Order By 排序条件中带参数的写法 我还是无奈的用 ORDER BY ${sortSql} ,就是在后面传参数 拼sql的方式实现的。

我查到说${}是不安全的,推荐用#{}。

#{}是安全的,可以防止sql注入,会预预编译在参数外面加上单引号‘’ ,在order by后面参数加单引号会语句无效。只好还是用了${}。

这个问题怎么办 如果有人知道也非常希望给我说说。

后记 : ORDER BY 1{参数2} 这种写法是OK的,只是要在代码中先过滤性验证前端传入的参数是不是合规的,作验证防止sql注入。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/11/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MyBatis查询数据库(3)
前面我们讲解了MyBatis增删改查基本操作,下面我们来深入了解MyBatis其中不同和需要注意的地方。
终有救赎
2023/10/16
3150
MyBatis查询数据库(3)
MySQL·Mybatis
使用 constructor 元素将结果注入构造方法里,先给 User 添加构造方法:
数媒派
2022/12/01
1.3K0
【JavaEE进阶】MyBatis表查询
在上一篇博客中我们简单了解了MyBatis的创建与使用,接下来我们进一步的学习MyBatis的相关知识。 注:此博客中测试案例所使用的单元测试在文末有教程. 一. 使用MyBatis完成数据
xxxflower
2023/10/16
3570
【JavaEE进阶】MyBatis表查询
JavaEE进阶----18.<Mybatis补充($和#的区别+数据库连接池)>
我们编写如下代码。用#和$分别去取值Integer类型参数和String类型参数。
用户11288958
2024/10/24
1040
JavaEE进阶----18.<Mybatis补充($和#的区别+数据库连接池)>
MyBatis——#{} 和 ${} 的区别和动态 SQL
#{} 的 SQL 语句中的参数是用过 ? 来起到类似于占位符的作用,而 ${} 是直接进行参数替换,这种直接替换的即时 SQL 就可能会出现一个问题
2的n次方
2024/11/21
920
MyBatis——#{} 和 ${} 的区别和动态 SQL
Mybatis order by 动态传参出现的一个小bug
很简单,查询语句后面加上:order by t.login_name='wulaoer' desc 就行了。
三分恶
2021/07/27
1.4K0
MyBatis动态传递参数的两种方式#{}和${}
最近做的Java规范更新涉及到MyBatis映射配置文件中动态传递参数的两种方式#{}和${},两者的区别,
bisal
2021/10/29
2.8K0
MyBatis动态传递参数的两种方式#{}和${}
Mybatis02动态sql和分页
2.2 使用{...}代替#{...}(不建议使用该方式,有SQL注入风险)          关键:#{...}与{...}区别?          参数类型为字符串,#会在前后加单引号['],
天蝎座的程序媛
2022/11/18
8890
5. Mybatis 单表查询 - resultMap标签 - 多条件查询 - 模糊查询
在前面篇章中,我们编写查询的都是 select * from user 这样的查询,而查询的结果集字段名 都是对应 我们编写的实体类 User 相关属性名。所以我们设置返回的结果都是用 resultType 属性,如下:
Devops海洋的渔夫
2022/01/17
9860
5. Mybatis 单表查询 - resultMap标签 - 多条件查询 - 模糊查询
Oracle数据库的基本查询
本文用的是Oracle 10g数据库,利用PL/SQL Developer的集成开发环境。
星哥玩云
2022/08/17
3.3K0
一文解惑mybatis中的#{}和${}
#{}:先编译sql语句,再给占位符传值,底层是PreparedStatement实现。可以防止sql注入,比较常用。
一个风轻云淡
2023/10/15
8930
一文解惑mybatis中的#{}和${}
Mybatis动态SQL解析
由于前台传入的查询参数不同,所以写了很多的if else,还需要非常注意SQL语句里面的and、空格、逗号和转移的单引号这些,拼接和调试SQL就是一件非常耗时的工作。 MyBaits的动态SQL就帮助我们解决了这个问题,它是基于OGNL表达式的。
向着百万年薪努力的小赵
2022/12/02
5120
Mybatis动态SQL解析
MyBatis Order By注入错误
这里orderBy, orderType是前端传过来的话很容易产生sql注入问题。
明明如月学长
2021/08/27
1.5K0
2021年,SQL注入死透了么?
很长一段时间,我认为后端开发,在安全性方面最容易出问题的地方就在于SQL注入。通过 where 1=1这种魔幻的SQL写法,就可以很容易的对一个存在问题的系统进行攻击,以至于最终演进出sqlmap这样的神器存在。
xjjdog
2021/03/25
1K0
2021年,SQL注入死透了么?
【MyBatis-plus】条件构造器详解
以下出现的第一个入参boolean condition表示该条件是否加入最后生成的SQL中,例如:
JavaEdge
2021/10/18
1.5K0
【Mybatis】MyBatis 探秘:#{} 与 ${} 参传差异解码,数据库连接池筑牢数据交互根基
我们在之前的学习中,了解到了“#{}”,但是这里的{}是什么呢?其实这里的{}也具有参数传递的功能但是我们之前为什么不使用
用户11288949
2025/01/17
970
【Mybatis】MyBatis 探秘:#{} 与 ${} 参传差异解码,数据库连接池筑牢数据交互根基
数据库访问框架 - Mybatis
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为Mybatis。2013年11月迁移到Github。 iBatis一词源于”internet”和”abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAOS)。 mybatis 内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。 mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。 采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。
兜兜转转
2023/03/29
5.5K0
数据库访问框架 - Mybatis
Mybatis-Plus条件构造器
排序:ORDER BY 字段, … DESC 例: orderByDesc("id", "name")—>order by id DESC,name DESC
别团等shy哥发育
2023/02/25
1.2K0
Mybatis-Plus条件构造器
Mybatis 从SQL注入到OGNL注入
动态 SQL 是 MyBatis 的强大特性之一,一般而言,如果不使用动态SQL来拼接SQL语句,是比较痛苦的,比如拼接时要确保不能漏空格,还要注意去掉列表最后一个列名的逗号等,但是利用动态 SQL,就可以彻底摆脱这种痛苦。
p4nda
2023/05/15
1.5K0
Mybatis 从SQL注入到OGNL注入
MyBatis-Plus(实用篇)
创建MyMetaObjectHandler配置类,实现MetaObjectHandler接口
冬天vs不冷
2025/01/21
4100
MyBatis-Plus(实用篇)
相关推荐
MyBatis查询数据库(3)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文