Compartilhamento de tecnologia

MyBatis (27) Como configurar MyBatis para imprimir instruções SQL executáveis

2024-07-12

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

Durante o processo de desenvolvimento, a impressão de instruções SQL executáveis ​​é muito útil para depuração e otimização de desempenho. MyBatis oferece várias maneiras de imprimir instruções SQL.

1. Use a estrutura de registro

MyBatis pode imprimir instruções SQL configurando sua estrutura de log interna (como Log4j, Logback, etc.). Este é o método mais comum.

Exemplo de configuração de logback

Se você estiver usando o Logback, você podelogback.xmlAdicione a seguinte configuração ao arquivo:

<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

Após esta configuração, as instruções SQL executadas pelo MyBatis e seus parâmetros serão impressos no log.

Exemplo de configuração Log4j

Se você estiver usando Log4j, você podelog4j.propertiesAdicione a seguinte configuração ao arquivo:

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

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

2. Use a implementação de log fornecida por MyBatis

O próprio MyBatis também fornece uma implementação de log simples, que pode ser configurada no arquivo de configuração MyBatis.mybatis-config.xmlConfigurações para ativar:

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

Isso registrará a saída padrão.logImplO valor pode serSTDOUT_LOGGINGLOG4JLOG4J2SLF4Jetc., escolha de acordo com a estrutura de registro usada em seu projeto.

3. Use P6Spy

P6Spy é uma ferramenta de análise de consulta de banco de dados que pode fazer proxy do driver JDBC para interceptar e registrar instruções SQL. Usando o P6Spy, você pode registrar todas as instruções SQL executadas através do JDBC sem modificar nenhum código.

Para usar o P6Spy você precisa:

  1. Adicione a dependência P6Spy ao seu projeto.
  2. Configuraçãospy.propertiesarquivo, especificando o driver JDBC real e o caminho do arquivo de log, etc.
  3. Modifique a configuração da conexão com o banco de dados e use o driver proxy do P6Spy.
Adicionar dependência P6Spy

Veja Maven como exemplo:

<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>最新版本</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
Configuraçãospy.properties

existirsrc/main/resourcesCriar no diretóriospy.propertiesarquivo e configure-o da seguinte forma:

driverlist=真实的数据库驱动类名
logfile=日志文件路径
  • 1
  • 2
Modificar configuração de conexão com o banco de dados

Altere a classe do driver de conexão com o banco de dados paracom.p6spy.engine.spy.P6SpyDriver, o prefixo do URL é alterado parajdbc:p6spy:

Resumir

Acima estão várias maneiras de implementar instruções SQL executáveis ​​​​de impressão MyBatis. No desenvolvimento real, o método apropriado pode ser selecionado com base nas necessidades específicas do projeto e na pilha de tecnologia utilizada. Geralmente, configurar a estrutura de log é o método mais simples e comum.