当前使用版本(必填,否则不予处理)

3.5.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

表名为 order,使用 orderMapper.insert(order) 方法的时候发生 SQL 语法错误。

原因就在 order 是 sql 的关键字,在 sql 中使用 order 做表名需要加上 ` ` 才能正常使用,像这样: `order`。

重现步骤(如果有就写完整)

设置表名 order 然后使用 orderMapper.insert(order) 方法,其中 order 是已经属性赋值的实体对象引用。

报错信息

### SQL: INSERT INTO order  ( user_id, goods_id, delivery_addr_id, goods_name, goods_count, goods_price, order_channel, status, create_date )  VALUES  ( ?, ?, ?, ?, ?, ?, ?, ?, ? )
### Cause: java.sql.SQLSyntaxErrorException: 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 'order  ( user_id,
goods_id,
delivery_addr_id,
goods_name,
goods_count,
goods_pri' at line 1

提问

请问为什么不在拼接 SQL 的时候加上 `` 呢?

请问除了换表名和自己手动写 SQL 之外还有解决办法吗?

请问这样的做法是基于其他考虑吗?

Comment From: wakakaxz

我一拍脑门。。。找到解决办法了:

在实体类的 @TableName(value ="order") 加上 `` 就 ok 了,像这样: @TableName(value ="order")

Comment From: wakakaxz

后来看了下 closed 里面已经有了,不好意思打扰了!