业务需求
通过后端代码传递参数,使用mysql的date_add(date,interval num unit)更新模板日期,之后按照一贯的思路,写了sql
select DATE_ADD(#{date},interval #{particleNum} #{particle})
结果在传值后,报错如下:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘week’)’ at line 1
借此问题,找到了问题所在,注入参数的时候,string类型使用 #{strname} 格式,会自动加上单引号,如下:
select DATE_ADD('2022-12-14',interval 1 'week')
此时传值需要不对参数进行处理,直接加到sql中,所以将日期单位参数改为下述方法
select DATE_ADD(#{date},interval #{particleNum} ${particle})
总结
#{} 传入的值会在两边加上引号。
${} 传入的值会直接加到SQL中。