mybatis可以记录可以直接运行的完整sql吗

gr8qqesn  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(371)

mybatis可以记录可以直接运行的完整sql吗

mitkmikd

mitkmikd1#

一般来说,答案是否定的。
如果查询有参数,mybatis原则上也不能这样做。为了记录查询,所有参数都应该序列化并表示为字符串。对于简单的数据类型,如 String 或者 Integer 这不是一个问题,但对于更复杂的 Timestamp 或者 Blob 表示可能取决于数据库。
执行查询时,不需要将参数转换为字符串,因为jdbc驱动程序以更高效(并且依赖于数据库)的格式将参数传递给数据库。但是出于日志记录的目的,mybatis只有java对象,而mybatis不知道如何将它们表示为特定于数据库的字符串文本。
因此,最好的方法(mybatis支持这一点)是使用占位符和单独使用的日志参数记录查询。配置 DEBUG 以Map器命名的记录器的日志级别。
对于log4j配置,如下所示:

log4j.logger.my.org.myapp.SomeMapper=DEBUG
gz5pxeao

gz5pxeao2#

如果你在开发环境中使用intellij,我认为plugin Mybatis Log Plugin 我可以帮你。
如果是在生产环境中,您可以复制日志并将其粘贴到本地。然后使用插件功能 Restore Sql from Selection 或者 Restore Sql from text (新版即将推出)
详细介绍:
https://github.com/kookob/mybatis-log-plugin

相关问题