mybatis/mybatis-plus中mysql报错

打印 上一主题 下一主题

主题 888|帖子 888|积分 2668


一、sql实行正常,mybatis报错

  1. Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "ur" <K_ISOLATION>
  2.     at line 26, column 34.
  3. Was expecting one of:
  4.     "ACTION"
  5.     "ACTIVE"
  6.     "ALGORITHM"
  7.     "ARCHIVE"
  8.     "ARRAY"
  9.     "AT"
  10.     "BYTE"
  11.     "CASCADE"
  12.     "CASE"
  13.     "CAST"
  14.     "CHANGE"
  15.     "CHAR"
  16.     "CHARACTER"
  17.     "CHECKPOINT"
  18.     "COLUMN"
  19.     "COLUMNS"
  20.     "COMMENT"
  21.     "COMMIT"
  22.     "COSTS"
  23.     "CYCLE"
  24.     "DBA_RECYCLEBIN"
  25.     "DEFAULT"
  26.     "DESC"
  27.     "DESCRIBE"
  28.     "DISABLE"
  29.     "DISCONNECT"
  30.     "DIV"
  31.     "DO"
  32.     "DUMP"
  33.     "DUPLICATE"
  34.     "ENABLE"
  35.     "END"
  36.     "EXCLUDE"
  37.     "EXTRACT"
  38.     "FALSE"
  39.     "FILTER"
  40.     "FIRST"
  41.     "FLUSH"
  42.     "FN"
  43.     "FOLLOWING"
  44.     "FORMAT"
  45.     "FULLTEXT"
  46.     "HISTORY"
  47.     "INDEX"
  48.     "INSERT"
  49.     "INTERVAL"
  50.     "ISNULL"
  51.     "JSON"
  52.     "KEY"
  53.     "LAST"
  54.     "LEADING"
  55.     "LINK"
  56.     "LOCAL"
  57.     "LOG"
  58.     "MATERIALIZED"
  59.     "NO"
  60.     "NOLOCK"
  61.     "NULLS"
  62.     "OF"
  63.     "OPEN"
  64.     "OVER"
  65.     "PARALLEL"
  66.     "PARTITION"
  67.     "PATH"
  68.     "PERCENT"
  69.     "PRECISION"
  70.     "PRIMARY"
  71.     "PRIOR"
  72.     "QUERY"
  73.     "QUIESCE"
  74.     "RANGE"
  75.     "READ"
  76.     "RECYCLEBIN"
  77.     "REGISTER"
  78.     "REPLACE"
  79.     "RESTRICTED"
  80.     "RESUME"
  81.     "ROW"
  82.     "ROWS"
  83.     "SCHEMA"
  84.     "SEPARATOR"
  85.     "SEQUENCE"
  86.     "SESSION"
  87.     "SHUTDOWN"
  88.     "SIBLINGS"
  89.     "SIGNED"
  90.     "SIZE"
  91.     "SKIP"
  92.     "SUSPEND"
  93.     "SWITCH"
  94.     "SYNONYM"
  95.     "SYSTEM"
  96.     "TABLE"
  97.     "TABLESPACE"
  98.     "TEMP"
  99.     "TEMPORARY"
  100.     "TIMEOUT"
  101.     "TO"
  102.     "TOP"
  103.     "TRUE"
  104.     "TRUNCATE"
  105.     "TRY_CAST"
  106.     "TYPE"
  107.     "UNQIESCE"
  108.     "UNSIGNED"
  109.     "USER"
  110.     "VALIDATE"
  111.     "VALUE"
  112.     "VALUES"
  113.     "VIEW"
  114.     "XML"
  115.     "ZONE"
  116.     <K_DATETIMELITERAL>
  117.     <K_DATE_LITERAL>
  118.     <K_NEXTVAL>
  119.     <K_STRING_FUNCTION_NAME>
  120.     <S_CHAR_LITERAL>
  121.     <S_IDENTIFIER>
  122.     <S_QUOTED_IDENTIFIER>
  123.         at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:31468)
  124.         at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:31301)
  125.         at net.sf.jsqlparser.parser.CCJSqlParser.Alias(CCJSqlParser.java:6654)
  126.         at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:8291)
  127.         at net.sf.jsqlparser.parser.CCJSqlParser.JoinerExpression(CCJSqlParser.java:8822)
  128.         at net.sf.jsqlparser.parser.CCJSqlParser.JoinsList(CCJSqlParser.java:8641)
  129.         at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:5652)
  130.         at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:5867)
  131.         at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:5516)
  132.         at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:5511)
  133.         at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:232)
  134.         at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:153)
  135.         at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:188)
  136.         at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:63)
  137.         at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:38)
复制代码
  其实这个报错就是由于在xml中自定义sql语句中使用了一些mybatis 保存的字符串, 我用了 ur ,这个字符串作为了一个表的别名,换一个就好了,可以从上述日志中看到,还有许多其他的保存字符串

这些都是
  二、sql实行正常,mybatis-plus报错

  1. 1064 - 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 'CUBE FROM table_user' at line 1
复制代码
此中实行的sql语句中,有一个字段为CUBE,此为mysql中的保存关键字,编写mysql语句,可以通过增加 重音符 ` 包裹起来解决这个题目;但我此时用的是mybatis-plus,它是主动拼接的没有给我手动拼接重音符的机会,如那边理呢?
直接改变字段

这个table_user表中的这个字段cube 的名字就不该用,直接改掉就行,改成cube_name,大概其他的;
使用mybatis-plus特性处置惩罚

如果这个字段已经用在了许多地方,改字段的方式影响很大,那么我们还有一个补救措施;
比方: table_user的实体如下:
  1. @TableName("table_user")
  2. public class User {
  3.         private String userId;
  4.         private String userName;
  5.        
  6.          @TableField("`cube`")
  7.         private String cube;       
  8. }
复制代码
  就是在原本的字段你上,增加 @TableField("cube"),让他在拼接sql的时候,主动增加这个重音符,如许就不用改变这个字段了。
  
总结

在表计划的时候,应该综合考量后续扩展性,见名知意的字段特性,以及制止使用mysql的保存关键字,如许能镌汰不必要的错误

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表