Mybatis踩坑日记------#{}和${} 报错 merge sql error, dbType mysql, druid-1.2.8

mybatis执行中,druid报错 merge sql error, dbType mysql, druid-1.2.8

如题

先上sql

sql 复制代码
select * from a
        order by #{orderByColumn} #{isAsc}

再代码执行中会报错

解决办法

sql 复制代码
select * from a
        order by #{orderByColumn} ${isAsc}

原因

#{}采用预处理的方式,会出现

sql 复制代码
select * from a
        order by ? ?

两个? ?分别对应 orderByColumn 和 isAsc,因为出现了? ?,预处理时druid报错

${}采用直接替换的方式,会出现

sql 复制代码
select * from a
        order by id asc

orderByColumn 和 isAsc直接被替换掉,故不报错

相关推荐
KhalilRuan3 分钟前
UnityCsReference——笔记
java·开发语言·笔记
何以解忧,唯有..28 分钟前
SpringBoot 中 @Transactional 注解失效的 8 种常见场景与解决方案
java
SL-staff36 分钟前
AB测试数据失真根因与变量热替换实战:JVS-Rules函数计算器架构解析
java·运维·微服务·函数式编程·规则引擎·变量管理·营销技术
Irene199138 分钟前
Java 3 天入门:“最小必要知识”的功利性学法
java
长谷深风1111 小时前
Agent 何时该 Replan:五个关键判断
java·大数据·开发语言·ai agent·ai智能体·agent设计·clarify机制
阿弱1 小时前
graph-core 的边与命令模式设计
java·后端·agent
互联网中的一颗神经元1 小时前
01. Go 内存管理全景架构
java·jvm·golang
萧瑟余晖1 小时前
Java深入解析篇三十四之分布式事务
java·开发语言·分布式
CAE虚拟与现实1 小时前
源码注解 /class 注解 / 运行时注解三者生命周期
java·开发语言