mybatis-plus を 3.5.3.1 に、JSQLParser を 4.3 から 4.6 にアップグレードすることによって発生する挿入の問題が解決されました

      プロジェクト コンポーネントのアップグレードのため、mybatis-plus を 3.5.3.1 に、JSQLParser を 4.3 から 4.6 にアップグレードする必要がありますが、標準の挿入でも次のようにエラーが報告されることがわかります。

      

### 原因: com.baomidou.mybatisplus.core.Exceptions.MybatisPlusException: 処理に失敗しました。エラー SQL: INSERT INTO sys_deploy_form ( id,
form_id,
deploy_id,


form_flag、
create_by、
create_time、


sys_org_code ) VALUES ( ?、
?、
?、


?、
?、
?、


? )
    org.apache.ibatis.Exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    、org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:196)
    、org.apache.ibatis.session で。 defaults.DefaultSqlSession.insert(DefaultSqlSession.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Delegating) MethodAccessorImpl. java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
    ... 134 個の共通フレームが省略されました
原因: com.baomidou.mybatisplus.core.Exceptions.MybatisPlusException: 処理に失敗しました、エラー SQL: INSERT INTO sys_deploy_form ( id,
form_id,
deploy_id,


form_flag、
create_by、
create_time、


sys_org_code ) VALUES ( ?、
?、
?、


?、
?、
?、


? )
    com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39)
    com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserMulti(JsqlParserSupport.java:74)
    com.baomidou.mybatisplus。 extension.plugins.inner.TenantLineInnerInterceptor.beforePrepare(TenantLineInnerInterceptor.java:81)
    com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:102)
    org.apache.ibatis.plugin.Plugin.invoke( Plugin.java:62)
    com.sun.proxy.$Proxy609.prepare(Unknown Source)
    at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87)
    at org.apache.ibatis.executor.SimpleExecutor .doUpdate(SimpleExecutor.java:49)
    org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
    で org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
    で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    で java.lang.reflect.Method.invoke(Method.java:498)
    で org. org.jeecg.config.mybatis.MybatisInterceptor.intercept
    (MybatisInterceptor.java:135)
    の org.apache.ibatis.plugin.Plugin.invoke(Plugin. java:62)
    com.sun.proxy.$Proxy608.update(不明なソース)
    で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
    で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    で sun.reflect.DelegatingMethodAccessorImpl.invoke     ( DelegatingMethodAccessorImpl.java:43)、java.lang.reflect.Method.invoke(Method.java:498)、org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)、com.baomidou.mybatisplus
    。     _ extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106)     org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)     com.sun.proxy.$Proxy608.update(不明なソース)




    org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) で
    ... 140 個の共通フレームが省略されました
原因: java.util.concurrent.ExecutionException: net.sf.jsqlparser.parser.ParseException: Encountered予期しないトークン: "\n\n\n" <ST_SEMICOLON>
    行 3、列 11。

  ただし、JSQLParser4.3を使うのが普通なので、公式のJSQLParserに問い合わせるしかなく、返答は以下の通りです。

Re: [JSQLParser/JSqlParser] [BUG] JSQLParser バージョン 4.6:mysql5.7ParseException: 予期しないトークンが発生しました: "\n\n\n" <ST_SEMICOLON> (Issue#1842) manticore-projects MyBatis が 2 つの空


をステートメントに問題があるため、ソフトウェアの上流で修正することをお勧めします。

   以上のことから、mybatis-plus の問題のはずなので、後で mybatis-plus 公式に問い合わせてみたところ、確かに同様の問題があります。

              後からmybatis-plusをバージョンアップするしか解決できないようですが、次のような一時的な解決策があります。

バージョン競合の問題を一時的に解決するための構成を追加することです。

#mybatis-plus に 2 つの空白行がありますが、これは以降のバージョンで修正される必要があります。JSqlParser4.6 との競合を解決するためにこれを一時的に追加します。

SQL 内の空白スペースの縮小: true

mybatis-plus:
  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml,classpath*:com/nbcio/modules/**/xml/*Mapper.xml
  global-config:
    # 关闭MP3.0自带的banner
    banner: false
    db-config:
      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
      id-type: ASSIGN_ID
      # 默认数据库表下划线命名
      table-underline: true
  configuration:
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 返回类型为Map,显示null对应的字段
    call-setters-on-nulls: true
    #mybatis-plus出现两个空行问题,后续版本应该会修正,临时先加这个解决与JSqlParser4.6冲突问题
    shrink-whitespaces-in-sql: true

おすすめ

転載: blog.csdn.net/qq_40032778/article/details/132101805