一 保留字查询造成的报错如下
1 | 2020-08-25 09:03:56.552 ERROR 47459 --- [nio-8082-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: |
二 原因分析及解决方案
通过报错信息可以看出,是因为
desc
是mysql数据库的关键字,而sql里如果包含关键字,会报java.sql.SQLSyntaxErrorException
异常。
解决方案:
- 字段名改名,比如 desc用description替换。
- 如果是数据库字段名本身是关键字,还可以通过注解方式的value值前后加上”`”,如下:
1 "`desc`") (value =
关于此示例的报错,明显只能通过第一种方案解决,因为是别名,通过注解的value解决不了,其实这也是mybatisplus的局限性,如果mybatis plus的设计,所有字段都添加了”`”,则不存在这种问题了。
如此生成的查询sql则是这样:1
select `f_desc` as `desc` from t_company limit 10