Por que a saída SQL no console?
Obviamente, é para a conveniência do desenvolvimento e depuração.
Se houver um problema com uma operação relacionada ao banco de dados, podemos solucionar rapidamente o problema com base na instrução SQL de saída.
Informações de saída:
[org.mybatis.spring.sqlSessionUtils]-Criando uma nova sqlSession
[org.mybatis.spring.sqlsessionUtils] -SQLSession [org.apache.ibatis.session.defaults.defaultsqlsession@33290f98] não foi registrado para a sincronização porque a sincronização não está ativa
[org.springframework.jdbc.dataSource.dataSourceutils]-Connection JDBC da DataSource
[org.mybatis.spring.transaction.springmanagedtransaction] -jdbc conexão [jdbc: mysql: //rds.aliyuncs.com: 3306/yyyy? useunicode = true & caracterenicing = utf-8 & zerodatETimeBeHavior = Converttonl = [email protected], MySQL Connector Java] não será gerenciado pela primavera
[Datenumber.pageSelect]-==> Preparing: SELECT x.Id, DATE_FORMAT(x.`Date`, '%Y%m%d') `datestr`, x.befor_num, x.after_num, x.physician_id, y.department_id, y.clinic_id, y.true_name, y.avatar, y.title, y.telephone FROM DataNumber X Junte -se à direita física y em x.fysician_id = y.id e (x.`date`> =? e x.``Date` <=?) Onde 1 = 1 e y.clinic_id =? Ordem por x.date ASC
[DataNumber.PageSelect]-==> Parâmetros: 2017-3-28 (String), 2017-4-4 (String), 1 (Long)
[DataNumber.PageSelect]-<== Total: 19
O conteúdo de saída é bastante terrível. Os caracteres de conexão do banco de dados e o nome de usuário e a senha são emitidos, portanto, tenha cuidado.
No entanto, uma coisa é ruim é que as instruções e parâmetros SQL são emitidos separadamente. Se você deseja copiá -los para a ferramenta de consulta para depurar, você mesmo deve preencher os parâmetros, o que é mais problemático.
Meu ambiente de projeto
Primavera 4.0.2 + mola mvc 4.0.2 + mybatis 3.2.6
Método 1: Use saída de log padrão
Este método é relativamente simples. Você só precisa configurar o arquivo de configuração do MYBATIS com propriedades relevantes e não precisa colocar um arquivo log4j.properties.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="logImpl" value = "stdout_logging"/> </fastings> </figuration>
Declarações -chave:
<Configuração name = "logImpl" value = "stdout_logging"/>
Especifica qual implementação de registro Mybatis deve usar. Se essa configuração não existir, as implementações de registro serão descobertas automaticamente.
Método 2: Use saída log4j log
1. O arquivo spring-mybatis.xml não precisa ser modificado;
2. Em mybatis.xml, especifique usar o log4j como implementação do log, que não preciso testar.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="logImpl" value = "log4j"/> </fastings> </figuration> <!-Na verdade, você pode testar se esse arquivo está disponível->
Os valores do valor aqui podem ser SLF4J, Apache Commons Logging, Log4J2, Log4J, JDK Logging (exceto log4j2, log4j, outros não verificados) e serão pesquisados em ordem.
3. A configuração também é necessária no web.xml
<Ilanter> <listener-class> org.springframework.web.util.log4jconfigListener </lirvier-class> </lister>
Ou use o seguinte (não testado)
<Ilanter> <lister-class> org.apache.logging.log4j.web.log4jservletContextListener </lister-class> </lister>
4. Finalmente configure log4j.properties
### Log4j configuration#### ### In combination with Spring, you need to specify this file location in web.xml and add a listener #### #Define the output level and output destination of log4j (the destination can be customized, and the corresponding to the subsequent) #[ level ] , appenderName1 , appenderName2 log4j.rootLogger=DEBUG,console,file #------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- log4j.appender.console.threshold = Debug ##### Você pode especificar com flexibilidade o formato de saída de log. A linha a seguir especifica o formato específico. ########### A categoria à qual a informação do log de saída pertence é geralmente o nome completo da classe#%m: a mensagem especificada no código, as informações específicas de log geradas#%n: saída de uma linha de retorno de carruagem, a plataforma do Windows é "/r/n" e a plataforma unix é "/n" para produzir informações de log4j.apnder.Console.ConSole.ConSole.ConSole.ConSole. log4j.appender.console.layout.ConversionPattern=[%c]-%m%n #-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- When the file size Atinge o tamanho especificado, um novo arquivo é gerado log4j.appender.file = org.apache.log4j.rollingFileAppender#Log Diretório de saída LOG4J.APPER.FILE.FILE = LOG/TIBET.LOG #Define the Maximum File Tamanho 4J. log4j.appender.file.threshold = erro log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.appender.file.layout.conversionPattern = [%p] [D {yy-mm-dd}] [%c]%M%n #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Exibir SQL Part Part Log4j.logger.org.mybatis = Debug #log4j.logger.cn.tibet.cas.dao = Debug #log4j.logger.org.mybatis.common.jdbc.simpledatasource = Debug #log4j.logger.org.mybatis.common.jdbc.scriptRunner = Debug #log4j.logger.org.mybatis.sqlmap.engine.impl.sqlmapCientDelegate = DEBUG #LOG4J.Logger.Java.SQL.SQL.SQL. log4j.logger.java.sql = debug log4j.logger.java.sql.statement = debug log4j.logger.java.sql.resultset = depurg4j.logger.java.sql.PreparedStatement = depuração Comparação das duas maneiras
1. A configuração usando saída de log padrão é simples, enquanto a configuração usando a saída de log4J do log4J é relativamente complexa;
2. Log4J tem funções poderosas e granularidade de controle relativamente fina;
Quando especificado como "stdout_logging" no arquivo de configuração, qual implementação de log é realmente usada? Apache Commons Logging ou JDK Logging?
Nenhum deles, na verdade é System.out.pringln.
Atualizado em 2017-09-14
Alguns amigos relataram que não produzirão instruções SQL após configurar o segundo método. Observe que no arquivo log4j.properties:
log4j.appender.console.threshold = Debug
É consistente com este exemplo?
Por favor, preste atenção aos detalhes. Amigos que estão apenas começando a estudar podem primeiro usar a configuração fornecida neste exemplo e depois personalizá -la de maneira pessoal.
Além disso, de acordo com a configuração acima, produzirei uma grande quantidade de informações fora das instruções SQL. Um amigo tentou produzir apenas instruções, parâmetros e resultados SQL.
Obrigado aqui e compartilhe com você:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.