技術共有

MyBatis (27) 実行可能な SQL ステートメントを出力するように MyBatis を設定する方法

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

開発プロセス中に、実行可能な SQL ステートメントを出力すると、デバッグとパフォーマンスの最適化に非常に役立ちます。 MyBatis は、SQL ステートメントを出力するいくつかの方法を提供します。

1. ロギングフレームワークを使用する

MyBatis は、内部ログ フレームワーク (Log4j、Logback など) を構成することで SQL ステートメントを出力できます。これが最も一般的な方法です。

ログバック構成の例

ログバックを使用している場合は、次のことができます。logback.xml次の構成をファイルに追加します。

<configuration>
    <!-- 其他配置 -->

    <!-- 配置MyBatis日志级别 -->
    <logger name="org.apache.ibatis" level="DEBUG"/>
    
    <!-- 如果你想要更详细的输出,包括SQL语句、参数等 -->
    <logger name="java.sql.PreparedStatement" level="TRACE"/>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

この構成の後、MyBatis によって実行された SQL ステートメントとそのパラメーターがログに出力されます。

Log4j 構成例

Log4j を使用している場合は、次のことができます。log4j.properties次の構成をファイルに追加します。

# 配置MyBatis日志级别
log4j.logger.org.apache.ibatis=DEBUG

# 如果你想要更详细的输出,包括SQL语句、参数等
log4j.logger.java.sql.PreparedStatement=TRACE
  • 1
  • 2
  • 3
  • 4
  • 5

2. MyBatis が提供するログ実装を使用します。

MyBatis 自体も、MyBatis 構成ファイルで構成できる簡単なログ実装を提供します。mybatis-config.xml有効にする設定:

<configuration>
    <settings>
        <!-- 启用日志 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

これにより、標準出力にログが記録されます。logImpl値は次のとおりです。STDOUT_LOGGINGLOG4JLOG4J2SLF4Jなど、プロジェクトで使用されるロギング フレームワークに応じて選択します。

3.P6Spyを使用する

P6Spy は、JDBC ドライバーをプロキシして SQL ステートメントをインターセプトおよび記録できるデータベース クエリ分析ツールです。 P6Spy を使用すると、コードを変更せずに、JDBC を通じて実行されたすべての SQL ステートメントを記録できます。

P6Spy を使用するには、次のものが必要です。

  1. P6Spy の依存関係をプロジェクトに追加します。
  2. 構成spy.propertiesファイル、実際の JDBC ドライバーとログ ファイルのパスなどを指定します。
  3. データベース接続構成を変更し、P6Spy のプロキシ ドライバーを使用します。
P6Spy 依存関係を追加

Maven を例に挙げます。

<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>最新版本</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
構成spy.properties

存在するsrc/main/resourcesディレクトリ配下に作成spy.propertiesファイルを作成し、次のように設定します。

driverlist=真实的数据库驱动类名
logfile=日志文件路径
  • 1
  • 2
データベース接続構成を変更する

データベース接続のドライバークラスを次のように変更します。com.p6spy.engine.spy.P6SpyDriver、URL プレフィックスが に変更されます。jdbc:p6spy:

要約する

上記は、実行可能な SQL ステートメントを印刷する MyBatis を実装するいくつかの方法です。実際の開発では、プロジェクトの特定のニーズと使用されるテクノロジー スタックに基づいて、適切な方法を選択できます。通常、ロギング フレームワークを構成するのが最も簡単で一般的な方法です。