文档章节

Mybatis--动态设定 字段 order by 排序

l
 lnt123
发布于 2016/07/11 14:39
字数 279
阅读 164
收藏 0

今天测试发现了个项目BUG,说是查询的列表没有排序。查看代码如下:

代码中已经对SQL进行了排序。再次运行代码,发现查询结果还是没有排序。于是查看打印日志:

将语句和参数放入工具navicate for mysql 发现没问题。

上网搜索发现,原来是mybatis问题,mybatis SQL文件中 #符号将传入的数据都当做一个字符串,会对数据增加一个引号,如 order by #{ userid } , userid对应的值是10001,解析后就是 order by '10001' 。

$符号将传入的数据直接显示在sql中。如 order by ${ userid } , userid对应的值是10001,解析后结果为 order by userid 。将 sql中的#改成$发现果然结果可以。

再次搜索发现 #可以最大程度防止sql注入,$则无法防止sql的注入,一般课可以传入数据库对象,比如表明或者字段名称。使用的时候需要注意。

决定还是改用pagebounds排序

© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 1
码字总数 279
作品 0
长沙
私信 提问
mybatis #{} ${} 说明

mybatis中#{}和${}的区别 ,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".    $将传入的数据直接显示生成在sql中。如:order...

inidcard
11/05
0
0
Mybatis中的$和#的区别

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

程序猿之小菜鸟
2016/06/20
5
0
mybatis中的#和$的区别

,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".    $将传入的数据直接显示生成在sql中。如:order by $userid$,如果传入的...

动听的椰子
2016/04/06
29
0
mybatis动态添加排序条件参数设置

不能使用#{},因为会默认加上引号(ORDER BY '字段' 'DESC/ASC'),导致排序无效

Kylin_Shaw
2016/02/26
133
0
mybatis中的#{value}和${value}的区别

#{value}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。 ${value}将传入的数据直接显示生成在sql中。 #{value}方式能够很大程度防止sql注入。  4.${value}方式无法防止S...

北國丶江山
2016/09/05
52
1

没有更多内容

加载失败,请刷新页面

加载更多

mybatis批量操作sql配置

在写批量sql操作时,遇到执行报错: <foreach collection="list" item="item" index="index" separator=";"> update t_xxx set column1=#{item.column1} where id= #{item.id} </foreach> 分......

lar555
10分钟前
0
0
L2TP VPN客户端配置

打开网络设置-->选择VPN-->添加VPN链接 配置完毕,打开更改适配器选项 右键-->属性 选中安全---允许使用安全协议,确定保存后连接vpn即可

阿伦哥-
14分钟前
0
0
缘“熟”而起——《乡土中国》读书笔记3600字

缘“熟”而起——《乡土中国》读书笔记3600字: 发现电脑里藏了几篇本科大一大二写的读书笔记。回想当初阅读这些社会科学书籍的时候,自己尽力又时而深感难以读懂的心境仿佛重现。但如今细想...

原创小博客
16分钟前
0
0
SpringBoot与pageHelper版本问题

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version></parent> <dependency>......

WALK_MAN
21分钟前
1
0
PHP开发支付宝微信个人免签支付接口实例

这是一个PHP开发支付宝微信个人免签支付接口实例,支付宝微信即时到帐接口,使用原生支付宝即时到帐接口修改而来,即可实现多接口收款功能,开发只需要按照支付宝即时到帐接口开发即可,减少...

sucaihuo
25分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部