MySQL的问题
1. 基本概念
在之前的文章中,我们反复强调,默认情况下,Jimmer不会为MySQL启用批量查询。这是因为MySQL对批量查询的支持存在两个缺陷:
-
必须在JDBC连接字符串中显式指定
rewriteBatchedStatements才能开启MySQL的批量操作能力,例如jdbc:mysql://localhost:3306/mydb?rewriteBatchedStatements=true警告如果不指定
rewriteBatchedStatements,虽然JDBC的Batch操作仍然可以执行,但实际被调用的是虚假实现。 对性能没有任何帮助,本质上和使用多条SQL没有任何区别。 -
一旦真正启用了MySQL的批量操作,会丢失必要的返回信息,例如
-
无法返回JDBC的
generatedKeys,这会导致无id属性的实体对象的id无法被自动填充,而这对基于自动编号的id分配策略而言是非常重要且常见的诉求 -
无法返回任何操作的影响行数
信息Jimmer称MySQL的这种批量操作为哑批操作。由于该操作会导致实质性的功能缺失
-
除非用户明确表示自己可以接受
-