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

3.3.2

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

情况一

本地MySQL: 5.7.19-log 测试环境MySQL: 5.6.29-mycat-1.6.7.1-release

  • 两库表结构均相同
  • 连上本地的MySQL生成CRUD接口以及POJO之后(正常生成)再连接远程测试环境MySQL测试CRUD发现报:

    Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

情况二

  • 直接连远程测试环境MySQL执行生成CRUD接口功能时报如下错误:

    java.sql.SQLException: No dataNode found ,please check tables defined in schema: databaseName

排查

发现设计人员在设计表结构的时候有个别字段用了MySQL关键字,在对应的POJO字段加上:

    @TableField(value = "`desc`")
    private String desc;

之后发现情况一正常与测试服务器执行CRUD,情况二指定成没有关键字字段的表依然报如上情况二的错误(数据库链接配置等均一样)。

结论

generator 在生成POJO和xml 文件的时候是不是应该判断一下是不是对应的数据库关键字,如果是的话自动在POJO字段加@TableField(value = "`关键字`")`注解?

通过查看最新的generator源码,发现com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler包5月份已经添加上了,只是还未用?

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

如上

报错信息

如上

Comment From: nieqiurong

需要自己指定使用,没弄自动配置。

new DataSourceConfig().setKeyWordsHandler(new MySqlKeyWordsHandler());

Comment From: xdshent

需要自己指定使用,没弄自动配置。

java new DataSourceConfig().setKeyWordsHandler(new MySqlKeyWordsHandler());

好的