确认

  • [X] 我使用的版本是最新版, 并且使用插件确认过项目里无依赖版本冲突
  • [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
  • [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题

当前程序版本

3.5.10.1

问题描述

  • 使用SqlRunner.db().insert 或者 update 的value中含有单引号会报错;如果使用BaseMapper中的insert 和update 则正常。
  • 报错原因:没有转义。
  • 程序没有硬拼Sql,而是使用的{0},{1}这种占位符,期望-使用占位符传参应该与Xml中使用#{var}这种逻辑一致;

微信图片_20250114145231

详细堆栈日志

错误见图片;

Comment From: yuanyp

查询也一样会报错,示例代码如下: 微信图片_20250114153556

Comment From: nieqiurong

这硬拼出来的sql执行是会有这个问题,但本身的执行sql其实拿到数据库里是正常能执行的,如果要改成兼容mybatis的参数传递话,得可能需要加工一层.

Comment From: yuanyp

没有硬拼sql,都是用的参数 {0} ,第二张图有测试代码;

Comment From: yuanyp

@nieqiurong

Comment From: nieqiurong

我说的是框架代码里的,不是你拼的

Comment From: yuanyp

okok,希望纳入修改啊。

Comment From: nieqiurong

先待定把,看要不要这么改 MyBatis-Plus [错误报告]: MybatisPlus SqlRunner.db() 新增、修改、查询Sql的参数中有单引号报错问题,而直接使用mybatis的SqlRunner就正常。