Mysql 8 遇到的大坑之position

做毕设的时候,建了几张表,其中一张表叫position。具体字段就不用列了,因为不重要。

建表用的是mysql workbench,没任何问题。

当我使用mybatis查询的时候也没任何问题,开心的不得了!

@Select("select * from position where id=#{id}")
Position select(int id);

删除也没毛病,开心!

@Delete("delete from position where id=#{id}")
int delete(int id);

然而,当我进行插入时,我笑不出来了。

@Insert("insert into position(company,name,type,address,salary) values(#{company},#{name},#{type},#{address},#{salary})")
int insert(Position position);

代码报错了,1064的错误。找了好久没发现语句有什么问题。然后用工具拿SQL代码去试,一试就发现问题了。得感谢这个工具,让我把代码复制过去后自动变色变大写,不然真的找不到问题。

Mysql 8 遇到的大坑之position_第1张图片

这样一看,发现position变色了,难道是mysql8的关键字或保留字,去官网查了一圈回来,并不是。然而,用引号将表名括起来,可以执行了!!!

Mysql 8 遇到的大坑之position_第2张图片

原来position虽然不是关键字,但它是个字符串函数名,好吧,我头一次知道有position这么个函数。看来经验还是需要积累的,要学的东西也很多。

附上正确代码。因为代码已经写了很多,数据库表结构也比较复杂,不方便改表名了。建议开发时不要取这种表名。

@Insert("insert into `position`(company,name,type,address,salary) values(#{company},#{name},#{type},#{address},#{salary})")
int insert(Position position);

mysql8的关键字和保留字,参考官网https://dev.mysql.com/doc/refman/8.0/en/keywords.html

 

 

 

你可能感兴趣的:(java)