baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.37k stars 4.31k forks source link

希望改进一下自动生成SQL的多余换行问题:Encountered unexpected token: "\n\n\n" #5391

Closed ilxqx closed 1 year ago

ilxqx commented 1 year ago

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

3.5.3.1

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

这个问题是因为我引入了最新的JSqlParser4.6版本引起来,该版本新增了一个处理,超过两个空行将视为语句中断,即会被识别成多条语句即使没有;

我知道目前版本引入的4.5的JSqlParser,这个版本确实不存在问题。但是还是希望能够解决一下这个问题

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

可以看一个目前MybatisPlus框架生成的SQL样式:

INSERT INTO mrqc_hospitalization_medical_record  ( id,

medical_record_number,
created_at,
updated_at )  VALUES  ( ?,

?,
?,
? )

这个样式确实不敢恭维,其中存在很多空行,而我项目确实又需要引入JSqlParser4.6版本,所以这里就会出现问题了

报错信息

Encountered unexpected token: "\n\n\n"

wangwenyao commented 1 year ago

遇到了同样的问题,没有必要用换行符,使用空格不也可以吗,日志打印SQL换行也不方便查看

hcl04 commented 1 year ago

这个问题主要的解决应该由 SqlParser 处理,SQL 标准里没有多空行等同 SQL 中断的说法,我们会尝试调整下 SQL 样式,你们也可以同时可以向 SqlParser 作者反馈下

ilxqx commented 1 year ago

@hcl04 已经提过了,SqlParser作者说得 MybatisPlus库处理一下😂😂: https://github.com/JSQLParser/JSqlParser/issues/1804

nieqiurong commented 1 year ago

5345 合并至此处讨论