J'ai travaillé sur une chose étonnamment inhabituelle, "Utiliser java.util.logging
(ci-après dénommé JUL
) pour enregistrer le journal d'exécution de SQL émis par MyBatis ", donc la procédure à ce moment-là Je veux le garder facilement. C'est un article assez long, mais la configuration de logging.properties
devrait être la chose la plus importante.
Cet article a été vérifié pour fonctionner dans les environnements suivants, mais je pense qu'il fonctionnera dans des environnements avec différentes versions et intergiciels.
Préparez la table suivante «utilisateurs». La base de données sera dev
et l'utilisateur sera dev
.
dev=# \d users
Table "public.users"
Column | Type | Collation | Nullable | Default
--------+------+-----------+----------+---------
id | text | | not null |
name | text | | not null |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
Préparez les quatre modules suivants.
mybatis.logging.Main.java
: point d'entrée. La méthode principale est définie.mybatis.logging.repository.UsersRepository.java
: ʻusers` Interface du mappeur vers la table.mybatis-config.xml
: informations de connexion à la base de données utilisée par MyBatis.logging.properties
: paramètres JUL.java:mybatis.logging.Main.java
package mybatis.logging;
import java.io.IOException;
import java.io.UncheckedIOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import mybatis.logging.repository.UsersRepository;
public class Main {
public static void main(String[] args) {
var builder = new SqlSessionFactoryBuilder();
try (var in = Resources.getResourceAsStream("mybatis-config.xml")) {
var factory = builder.build(in);
try (var session = factory.openSession(true)) {
var usersRepository = session.getMapper(UsersRepository.class);
usersRepository.truncate();
usersRepository.insert("1", "Alice");
usersRepository.insert("2", "Bob");
}
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
java:mybatis.logging.repository.UsersRepository.java
package mybatis.logging.repository;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
public interface UsersRepository {
@Insert("INSERT INTO users (id, name) VALUES (#{id}, #{name})")
int insert(@Param("id") String id, @Param("name") String name);
@Delete("DELETE FROM users")
int truncate();
}
mybatis-config.xml
<?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>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://localhost:5432/dev"/>
<property name="username" value="dev"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="mybatis.logging.repository.UsersRepository" />
</mappers>
</configuration>
logging.properties
# ROOT LOGGER
handlers = java.util.logging.ConsoleHandler
.level = INFO
# ConsoleHandler Default Setting
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# MyBatis LOGGER
mybatis.logging.repository.level = FINE
L'image des informations de placement est présentée ci-dessous (Eclipse).
Exécutez ensuite Java avec la classe Main = mybatis.logging.Main
. À ce stade, spécifiez le fichier de propriétés pour JUL dans l'option VM java.util.logging.config.file
( logging.properties
dans l'exemple ci-dessus). Voici un exemple de définition des options de VM avec ʻEclipse`. Veuillez modifier cela en fonction de votre environnement.
Il réussit si le journal suivant est sorti sur la sortie standard. Si vous souhaitez conserver le journal dans un fichier, etc., modifiez la spécification du gestionnaire comme il convient.
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: ==> Preparing: DELETE FROM users
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: ==> Parameters:
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: <== Updates: 2
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: ==> Preparing: INSERT INTO users (id, name) VALUES (?, ?)
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: ==> Parameters: 1(String), Alice(String)
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: <== Updates: 1
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: ==> Preparing: INSERT INTO users (id, name) VALUES (?, ?)
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: ==> Parameters: 2(String), Bob(String)
13 avril, 2019 6:31:41 pm org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
d'habitude: <== Updates: 1
Recommended Posts