Pourquoi sortir SQL sur la console?
Bien sûr, c'est pour la commodité du développement et du débogage.
S'il y a un problème avec une opération liée à la base de données, nous pouvons rapidement résoudre le problème en fonction de l'instruction SQL de sortie.
Informations sur la sortie:
[org.mybatis.spring.sqlSessionUtils] - Création d'une nouvelle SQLSession
[org.mybatis.spring.sqlSessionUtils] -sqlSession [org.apache.ibatis.session.defaults.defaultsqlsession@33290f98] n'a pas été enregistré pour la synchronisation car la synchronisation n'est pas active
[org.springframework.jdbc.datasource.datasourceutils] -Fesching JDBC Connexion à partir de DataSource
[org.mybatis.spring.transaction.springManagedTransaction] -jdbc Connection [JDBC: mysql: //rds.aliyuncs.com: 3306 / yyyy? useunicode = true & caractères Nom d'[email protected], connecteur MySQL Java] ne sera pas géré par le printemps
[DateNumber.PageSelect] - ==> Préparation: 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. datenumber x droit joing physique y sur x.phyicic_id = y.id et (x.`date`> =? et x.`Date` <=?) Où 1 = 1 et y.clinic_id =? Ordre par x.date ASC
[DateNumber.PageSelect] - ==> Paramètres: 2017-3-28 (String), 2017-4-4 (String), 1 (long)
[DateNumber.PageSelect] - <== Total: 19
Le contenu de sortie est assez terrible. Les caractères de connexion de la base de données et le nom d'utilisateur et le mot de passe sont sortis, alors soyez prudent.
Cependant, une chose est mauvaise, c'est que les instructions et les paramètres SQL sont sortis séparément. Si vous souhaitez les copier dans l'outil de requête pour déboguer, vous devez remplir vous-même les paramètres, ce qui est plus gênant.
Mon environnement de projet
Spring 4.0.2 + printemps MVC 4.0.2 + Mybatis 3.2.6
Méthode 1: Utilisez la sortie du journal standard
Cette méthode est relativement simple. Vous n'avez qu'à configurer le fichier de configuration de MyBatis avec des propriétés pertinentes, et vous n'avez pas besoin de mettre un fichier 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> <paramètres> value = "stdout_logging" /> </daits> </ configuration>
Énoncés clés:
<paramètre name = "logIMPl" value = "stdout_logging" />
Spécifie la journalisation de la journalisation que MyBatis devrait utiliser. Si ce paramètre n'existe pas, les implémentations de journalisation sont automatiquement découvertes.
Méthode 2: Utilisez la sortie du journal log4j
1. Le fichier Spring-Mybatis.xml n'a pas besoin d'être modifié;
2. Dans MyBatis.xml, spécifiez d'utiliser Log4j comme implémentation du journal, que je n'ai pas besoin de tester réellement.
<? 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> <paramètres> value = "log4j" /> </daits> </ configuration> <! - En fait, vous pouvez tester si ce fichier est disponible ->
Les valeurs de valeur ici peuvent être SLF4J, Apache Commons Logging, Log4j2, Log4j, JDK Logging (sauf Log4j2, Log4j, d'autres non vérifiés), et seront recherchés dans l'ordre.
3. La configuration est également requise dans web.xml
<Doiner> <écouteur-classe> org.springframework.web.util.log4jconfigListener </ auteur-class> </diner>
Ou utiliser ce qui suit (non testé)
<Douger> <écouteur-classe> org.apache.logging.log4j.web.log4jservletContextListener </ auteur-class> </diner>
4. Configurer enfin log4j.properties
### Log4j Configuration #### ### En combinaison avec Spring, vous devez spécifier cet emplacement de fichier dans web.xml et ajouter un écouteur #### #define le niveau de sortie et la destination de sortie de Log4j (la destination peut être personnalisée, et la correspondance à la suivante) # [Niveau], ANPENDERNAM # --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- LOG4J.APPENDER.CONSOLE.THRESHOLD = DEBUG ##### Vous pouvez spécifier de manière flexible le format de sortie du journal. La ligne suivante spécifie le format spécifique. ########### al log4j.appender.console.layout.ConversionPattern=[%c]-%m%n #-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- When the file size atteint la taille spécifiée, un nouveau fichier est généré log4j.appender.file = org.apache.log4j.rollingFileAPpender #log Répertoire de sortie du fichier log4j.appenden log4j.appender.file.threshold = error log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.appender.file.layout.conversionpattern = [% p] [% d {yy-mm-dd}] [% c]% m% N n # ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Afficher la pièce de l'instruction SQL log4j.logger.org.mybatis = debug # log4j.logger.cn.tibet.cas.dao = debug # log4j.logger.org.mybatis.common.jdbc.simpledatasource = debugs # log4j.logger.org.mybatis.common.jdbc.scriptrunner = debug # log4j.logger.org.mybatis.sqlmap.engine.impl.sqlmapclientdelegate = DEBUG # log4j.logger.java.sql.connection = DEBUG # log4j.logger.java.sql.connection = DEBUG # Log4j.Logger.java.Sql.Connection = Debug log4j.logger.java.sql = debug log4j.logger.java.sql.statement = debug log4j.logger.java.sql.resultSet = debug log4j.logger.java.sql.preparedStatement = debug Comparaison des deux façons
1. La configuration à l'aide de la sortie du journal standard est simple, tandis que la configuration à l'aide de la sortie log4j log est relativement complexe;
2. Log4j a des fonctions puissantes et une granularité de contrôle relativement fin;
Lorsqu'il est spécifié comme "stdout_logging" dans le fichier de configuration, quelle implémentation du journal est réellement utilisée? Apache Commons Logging ou JDK Logging?
Aucun d'eux, c'est en fait System.out.pringln.
Mise à jour le 2017-09-14
Certains amis ont indiqué qu'ils ne publieront pas les instructions SQL après la configuration de la deuxième méthode. Veuillez noter que dans le fichier log4j.properties:
log4j.appender.console.threshold = debug
Est-ce conforme à cet exemple?
Veuillez faire attention aux détails. Les amis qui commencent à partir d'étudier peuvent d'abord utiliser la configuration fournie dans cet exemple, puis la personnaliser de manière personnelle.
De plus, selon la configuration ci-dessus, je vais sortir une grande quantité d'informations en dehors des instructions SQL. Un ami a essayé de ne sortir que des instructions SQL, des paramètres et des résultats.
Merci ici et partagez avec vous:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.