mybatis里排序失效

最近在做一个查询表格内容的需求,用户可以点击表头字段切换排序规则。做完了发现排序没达到效果,随意传的参数居然也不报错。
在这里插入图片描述
orderSql是我拼好的,比如是assess desc。

搜索后发现是变量定义转义问题:

(1)对于形如#{orderSql}的变量,Mybatis会将其视为字符串值,在变量替换成功后,缺省地给变量值加上引号。例如:

order by #{orderSql}
假设orderSql传入值为assess desc,则最终SQL语句等同为:
ORDER BY ‘assess desc’

而这个结果在日志里是发现不了的,该句子语法检查亦能通过,可以执行。
(2)对于形如${orderSql}的变量,Mybatis会将其视作直接变量,即在变量替换成功后,不会再给其加上引号。例如:

order by ${orderSql}
假设orderSql传入值为assess desc,则最终SQL语句等同为:
ORDER BY assess desc
为想要的正确结果。

======================================================

另,在写代码过程中才恍然领悟,标签不一定非要在标签内使用,如果套上标签,反而会在如下图的and前默认加上where。
此外,if标签里判断isTotal为true的写法是:

<if test="isTotal != null and isTotal == true">

注意不要把==写成=。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值