Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从mybatis xml查询生成sql查询_Java_Sql_Mybatis_Spring Mybatis - Fatal编程技术网

Java 从mybatis xml查询生成sql查询

Java 从mybatis xml查询生成sql查询,java,sql,mybatis,spring-mybatis,Java,Sql,Mybatis,Spring Mybatis,我有一个mybatis mapper文件xml,其中包含许多带条件的where子句的复杂查询 有没有办法创建可能的查询组合 我想对所有这些查询运行explain,因为我计划在所有查询中添加而不是。Inetractive application 在您的位置,我将使用某种load generator,在Selenium上记录一个宏,例如,在应用程序上可以单击的任何地方单击一些输入,以便触发目标SQL。然后我将放置一个记录器来记录和转储所有SQL查询。我将分析日志,提取所有不同的样本,并使用解释计划对

我有一个mybatis mapper文件xml,其中包含许多带条件的where子句的复杂查询

有没有办法创建可能的查询组合


我想对所有这些查询运行explain,因为我计划在所有查询中添加
而不是

Inetractive application 在您的位置,我将使用某种load generator,在Selenium上记录一个宏,例如,在应用程序上可以单击的任何地方单击一些输入,以便触发目标SQL。然后我将放置一个记录器来记录和转储所有SQL查询。我将分析日志,提取所有不同的样本,并使用解释计划对DB运行它们

这是一个解决办法,但我相信它会成功的


对于非交互式应用程序,其中UI、SOAP或REST录制不是选项。例如,某种基于网络的应用程序或批处理应用程序或其他什么。。。。如果我们假设它是一个批处理,我会让它播放并记录SQLs,然后再次进行解释。实际上,许多数据库都可以在运行中做到这一点。例如,如果在DB2上使用“查询监视器”,它会记录特定时间段内的所有查询,然后您可以看到最重的查询,或者只是最常见的查询,并进行解释。我的期望是,如果您只是在应用程序端转储sqls,那么其他数据库可能具有类似的功能。有很多选择

好问题。我不知道怎么做。顺便说一句,我正要在我的ORM上写一些代码来自动为一些数据库生成
EXPLAIN
,并显示计划。你能举个例子吗?你可以为mybatis创建单元测试(以实现所有可能的组合)和配置日志,以在日志中打印查询。。。这并不理想,但会给你所有的疑问。@Jorge Campos这是太多的工作了。宏记录器速度更快,根本不需要编写代码。单击并播放,这样说:)@AlexandarPetrov我同意根据“单击所有地方”的过程,如果查询的所有内容都依赖于直接输入,那么在您的回答中说明这一点会更容易。但如果它不依赖于直接输入呢?您将如何在宏中记录这一点?这就是为什么我建议进行单元测试开发。当需要更改某些内容时,它甚至对代码覆盖率和测试本身都很有用。您将已经有了一套测试套件来检查您的更改是否与其他所有内容一起工作。:)