今天如往常一样写SQL语句,由于懒癌发作就直接复制了上一个SQL语句改吧改吧就写完。结果在运行的时候蒙逼了,一直提示 "?"处有语法问题 就像这个亚子
当时我是一脸蒙蔽,我是谁?我在哪?我在干什么?
首先考虑了sql有问题,然后拿到Navicat 上运行一下,结果啥事没有。。。
我在那大眼瞪小眼看了五分钟后,发现了一个东西,那就是
这个玩意,起初因为是复制的,所以也没看这玩意是干嘛的,现在有错了,正好又遇见一个不认识的东西,怎么办呢?谷歌吧,这一查,问题出来了。statementType是用来标记Mybatis是用什么样的对象来操作Sql的。可选值有三个,分别为:
1、STATEMENT:直接操作sql,不进行预编译,获取数据:$—Statement
2、PREPARED:预处理,参数,进行预编译,获取数据:#—–PreparedStatement:默认
3、CALLABLE:执行存储过程————CallableStatement
当时我的 statementType 值就是 STATEMENT 所以在使用占位符的时候一直提示我 "?"处有语法问题 所以解决办法是要不删了 statementType 要不将 STATEMENT 改为 PREPARED