Ich habe an einer überraschend ungewöhnlichen Sache gearbeitet: "Verwenden Sie" java.util.logging "(im Folgenden als" JUL "bezeichnet), um das von MyBatis ausgegebene Ausführungsprotokoll von SQL aufzuzeichnen", also die damalige Prozedur Ich möchte es einfach behalten. Es ist ein ziemlich langer Artikel, aber das Festlegen von "logging.properties" sollte das Wichtigste sein.
Dieser Artikel wurde für den Betrieb in den folgenden Umgebungen überprüft, aber ich denke, dass er in Umgebungen mit verschiedenen Versionen und Middleware funktioniert.
Bereiten Sie die folgende Benutzertabelle vor. Die DB ist "dev" und der Benutzer ist "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)
Bereiten Sie die folgenden vier Module vor.
mybatis.logging.Main.java
: Einstiegspunkt. Die Hauptmethode ist definiert.mybatis.logging.repository.UsersRepository.java
: Mapper-Schnittstelle zur Tabelle 'users`.mybatis-config.xml
: Verbindungsinformationen zur von MyBatis verwendeten Datenbank.logging.properties
: JUL-Einstellungen.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
Das Bild der Platzierungsinformationen wird unten angezeigt (Eclipse).
Führen Sie dann Java mit der Hauptklasse = mybatis.logging.Main
aus. Geben Sie zu diesem Zeitpunkt die Eigenschaftendatei für JUL in der VM-Option "java.util.logging.config.file" ("logging.properties" im obigen Beispiel) an. Das Folgende ist ein Beispiel für das Festlegen von VM-Optionen in "Eclipse". Bitte ändern Sie dies entsprechend Ihrer Umgebung.
Es ist erfolgreich, wenn das folgende Protokoll an die Standardausgabe ausgegeben wird. Wenn Sie das Protokoll in einer Datei usw. aufbewahren möchten, ändern Sie die Handler-Spezifikation entsprechend.
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: ==> Preparing: DELETE FROM users
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: ==> Parameters:
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: <== Updates: 2
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: ==> Preparing: INSERT INTO users (id, name) VALUES (?, ?)
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: ==> Parameters: 1(String), Alice(String)
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: <== Updates: 1
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: ==> Preparing: INSERT INTO users (id, name) VALUES (?, ?)
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: ==> Parameters: 2(String), Bob(String)
13. April, 2019 6:31:41 Uhr org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl debug
gewöhnlich: <== Updates: 1
Recommended Posts