mybatis中#与$的坑

今天在做项目的时候遇到一个动态排序的功能,需求为:可点击多个列后面的箭头,动态升降序。

一.解决思路

前端动态传入字段名与排序方式(desc、asc)

二.解决方式

1.代码如下:

ORDER BY #{sort}||' '||#{sortType}

执行后发现排序未生效

2.代码如下:

ORDER BY ${sort} ${sortType}

排序生效。

三.原因

首先说一下 # 与 $ 的区别:

1.#可以防止sql注入。

2.#才用预编译形式,先用?占位,最后才设置值。

3.  $中间的变量就是直接替换成值的 , #会根据变量的类型来进行替换。

     比如为sort字段设置值name

     采用#为  'name'

     采用$为 name

    所以前面的问题就可以理解了。

4.$方式一般用于传入数据库对象,例如传入表名。

5.一般能用#的就别用$。

6.order by后面要使用 $。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值