Wie der Titel schon sagt, werde ich versuchen, über eine mit Spring Boot erstellte Java-Anwendung eine Verbindung zu MySQL herzustellen. Verwenden Sie MyBatis für den O / R-Mapper. * Was ist mein Batis
Da es der Fortsetzung von [Ich habe versucht, die Umgebung aufzubauen] entspricht (https://qiita.com/supreme0110/items/896cfa0349be5eacfed5) Bitte beachten Sie auch dies für die vorausgesetzte Umgebung.
Wenn Sie keine Verbindung herstellen können, können Sie dies gerne kommentieren.
Kommen wir von hier aus zum Hauptthema. Dieses Mal werde ich einfach eine API ** erstellen, die alle Daten in der Datenbank in einer Liste abruft, wenn Sie eine ** GET-Anfrage senden. Klicken Sie hier, um Tabellennamen und Testdaten anzuzeigen (https://qiita.com/supreme0110/items/896cfa0349be5eacfed5#4-1-db%E3%81%AB%E3%83%86%E3%83%BC%E3% Es wird angenommen, dass 83% 96% E3% 83% AB% E3% 82% 92% E4% BD% 9C% E3% 82% 8B) enthalten sind.
Abhängigkeiten reichen nicht aus, wenn Sie die Umgebung beim letzten Mal erstellen. Fügen Sie also Abhängigkeiten hinzu. Wir werden den praktischen Spring Initializer verwenden. ** Fügen Sie Web und Lombok ** zu MySQL, MyBatis hinzu und klicken Sie auf ** Projekt generieren **. * Was ist Lombok
Kopieren Sie den Inhalt von build.gradle aus der heruntergeladenen Zip-Datei in build.gradle Ihres Projekts. Nur für den Fall, ** aktualisieren **.
Ich konnte die Abhängigkeit sicher erfassen.
Spielen Sie als Nächstes mit dem Plug-In auf der IntelliJ-Seite. Öffnen Sie die Einstellungen mit ** Strg + Alt + S ** und klicken Sie unten in ** Plugins ** auf ** Repositorys durchsuchen ... **.
Wenn Sie nach Lombok suchen, finden Sie das ** Lombok Plugin **. Klicken Sie also auf ** Installieren **, um es zu installieren.
Wenn Sie es installieren können, ersetzt das Wort ** Install ** ** ** IntelliJ IDEA neu starten **. Klicken Sie also zum Neustart darauf. Es ist in Ordnung, wenn es neu gestartet wird!
Du bist bereit zu gehen! Kommen wir zur Programmierung!
Lassen Sie es uns diesmal wahnsinnig einfach machen, mit einer ** Controller- und Mapper-Konfiguration **. (Obwohl es Datenklassen usw. gibt) Bitte beachten Sie, dass wir die Quelle nicht ausführlich erläutern werden.
java:com.example.sampleapi.controller.SampleController.java
@RestController
@RequiredArgsConstructor
public class SampleController {
private final UsersMapper usersMapper; // (1)
@GetMapping("/get/sample")
public List<SampleResponse> getSample() {
List<UsersEntity> usersEntityList = usersMapper.findUserList(); // (2)
return usersEntityList.stream().map(SampleResponse::create).collect(Collectors.toList()); // (3)
}
}
java:com.example.sampleapi.controller.resource.SampleResponse.java
@Value // (4)
public class SampleResponse {
private Integer userId;
private String userName;
public static SampleResponse create(UsersEntity entity) { // (5)
return new SampleResponse(
entity.getUserId(),
entity.getUserName()
);
}
}
Eine kurze Erklärung.
(1). @ RequiredArgsConstructor
generiert automatisch einen Konstruktor, der dem Feld mit final
den Anfangswert zuweist. Mit anderen Worten, es ist ** Konstruktorinjektion **.
(2) Rufen Sie "UsersMapper" auf und empfangen Sie die von der DB erhaltenen Daten als Liste von Entitäten.
(3) Der Vorgang des Nachfüllens der in (2) empfangenen Liste in die Liste der Klasse "SampleResponse" wird ausgeführt.
(4) Lomboks "@ Value" generiert automatisch einen Konstruktor und einen Getter, der alle Felder initialisiert.
(5) Um die Prozessbeschreibung in (3) zu vereinfachen, wird der Prozess des Nachfüllens von der Entität zur Antwort unterbrochen.
Als Nächstes erstellen wir Klassen und Schnittstellen für die DB-Verbindung.
java:com.example.sampleapi.mapper.UsersMapper.java
@Mapper // (1)
@Component
public interface UsersMapper {
List<UsersEntity> findUserList(); // (2)
}
java:com.example.sampleapi.mapper.entity.UsersEntity.java
@Data // (3)
public class UsersEntity {
private Integer userId;
private String userName;
}
Noch eine kurze Erklärung. (1) Fügen Sie "@ Mapper" hinzu, eine Anmerkung von MyBatis. Dies erkennt, dass diese Klasse ein Mapper ist, der mit XML verknüpft ist. (2) Deklarieren Sie die Methode, die Sie implementieren möchten. ** Der Methodenname wird dem unten beschriebenen XML-ID-Attribut zugeordnet und die entsprechende SQL ausgeführt **. (3) Dies ist die von Lombok bereitgestellte Annotation "@ Data". Dadurch werden automatisch Setter und Getter für alle Felder generiert.
Probieren Sie es so weit ** "Ist der Spaltenname der Tabelle ein Schlangenfall, aber kann das Feld der Entität im Kamelfall abgebildet werden?" ** Ich dachte du. Es gibt noch ein paar weitere Einstellungen, also fahren Sie bitte so fort, wie es ist. Erstellen Sie schließlich eine XML-Datei, fügen Sie einfache Einstellungen in application.yml ein, und fertig.
xml:resources.mapper.Users.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.sampleapi.mapper.UsersMapper"> <!-- (1) -->
<select id="findUserList" resultType="com.example.sampleapi.mapper.entity.UsersEntity"> <!-- (2) -->
SELECT
USER_ID,
USER_NAME
FROM
USERS
</select>
</mapper>
yml:resources.application.yml
spring: #Dies ist diesmal irrelevant, da nur die DB-Verbindungsinformationen definiert werden
datasource:
url: jdbc:mysql://localhost/sample_db
username: root
password: dummy
mybatis:
mapperLocations: classpath*:/mapper/*.xml # (3)
configuration:
mapUnderscoreToCamelCase: true # (4)
Die letzte kurze Erklärung. (1) Geben Sie den Pfad der Klasse an, für die "@ Mapper" im Attribut "Namespace" angegeben ist. Dadurch erfahren Sie, welcher Java-Schnittstelle diese XML-Datei zugeordnet ist. (2) Um eine Zuordnung zu "UsersMapper.findUserList ()" vorzunehmen, beschreiben Sie "findUserList" im Attribut "id". Da der Rückgabewert angegeben werden muss, schreiben Sie den Pfad der Klasse "UsersEntity" in das Attribut "resultType". (3) Wenn Sie die Mapper-Schnittstelle und die XML-Datei so konfigurieren möchten, dass sie wie dieses Mal in verschiedenen Paketen vorhanden sind, können Sie "mapperLocations" angeben, um XML korrekt zu lesen. (4) Dies ist eine praktische Funktion, die automatisch den Spaltennamen des oben erwähnten Schlangenfalls und das Feld der im Kamelfall ** geschriebenen Entität abbildet. Der Standardwert ist "false". Setzen wir ihn also auf "true".
Es gibt viele andere nützliche Einstellungselemente. Weitere Informationen finden Sie unter MyBatis Official.
Du hast es geschaffen! !! Danach senden wir tatsächlich eine Anfrage an die API und prüfen, ob wir den Wert von der DB erhalten können! !!
Verwenden Sie den Postman REST-Client (https://chrome.google.com/webstore/detail/tabbed-postman-rest-clien/coohjcphdfgbiolnekdpbcijmhambjff/related), um Ihre Anfrage zu senden. Natürlich können Sie Curl oder andere Werkzeuge verwenden.
Starten wir nun die API. Wählen Sie die Gradle-Aufgabe ** bootRun ** von IntelliJ aus, um sie zu starten.
Geben Sie die URL an (http: // localhost: 8080 / get / sample), bestätigen Sie, dass es sich um eine GET-Methode handelt, und klicken Sie auf ** Senden **.
Sie können bestätigen, dass der Wert sicher erhalten wurde!
** Jetzt können Sie die DB jederzeit bedienen! !! ** ** **
** Ich habe den Eindruck, dass "Wenn Sie eine Umgebung haben, können Sie es leicht machen!" **.
** MyBatis persönlich mag die Tatsache, dass SQL geschrieben werden kann und die Zuordnung mit Java leicht zu verstehen ist **. Es scheint, dass Sie den Ort, an dem Sie XML schreiben müssen, und den Ort, an dem es keine automatische Generierungsfunktion wie JPA gibt, nicht mögen. ..
Wie bei allem denke ich, dass es einfach ist, wenn man sich erst einmal daran gewöhnt hat!
Recommended Posts