项目采用mybatis-plus,sql语句写在mapper.xml文件中,执行sql时出现sql语法错误提示。
parser.exception.SQLParsingException:SQL syntax error, expexted token is 'ERROR', actual token is 'QUESTION', literals is '?'
经过检查,在idea中,sql文件出现了红色波浪线的提示。
sql中有不可见字符,导致解析时提前结束,形成一个不完整的sql语句;
通过IDEA中的插件“BinEd”以十六进制形式打开文件,可以看到非法字符。
可以看出shardingjdbc3.x在解析mybatis-plus的sql时,不能自动过滤无效字符,而mybatis-plus在不经过shardingjdbc解析的情况下,这些无效字符对sql的执行是没有影响的。