[JAVA] Datenbankverknüpfung mit doma2 (Spring Boot)

Was ist Doma2?

Wird für den Datenbankzugriff verwendet. Die Funktionen sind wie folgt. Laut Official (https://doma.readthedocs.io/en/stable/)

Doma 2 ist ein Datenbankzugriffsframework für Java 8 und höher. Doma hat viele Vorteile.

  • Verwenden Sie die Annotationsverarbeitung, um den Quellcode beim Kompilieren zu validieren und zu generieren. · Ordnen Sie Datenbankspalten benutzerdefinierten Java-Objekten zu.

Das meiste davon ist noch übersetzt, daher kann Japanisch etwas seltsam sein. .. ..

Die Hauptvorteile sind die folgenden zwei Punkte -Keine Abhängigkeit von anderen Bibliotheken als JRE (abhängig von Abhängigkeiten ww) -Alle SQL können in einer Datei verwaltet werden (ist es lose gekoppelt?) Dies ist eine Meinung, die ich verwendet habe, aber ich dachte, dass die Verwaltung mit einer SQL-Datei den Vorteil hat, ** übermäßige Gemeinsamkeiten ** zu verhindern. Zu viel Gemeinsamkeit kann verwirrend sein.

Implementierung

Es gab ein offizielles Beispielprojekt, daher denke ich, dass dies leicht zu verstehen ist. Offizielles Beispiel Die wichtigste erforderliche Konfiguration ist ・ Dao (Dao ist eine Schnittstelle für den Datenbankzugriff) -Entity (eine Klasse, die eine Tabelle darstellt (aber nicht nur)) -SQL-Datei (Abfrage) Wird sein.

Definieren Sie eine Methode für die CRUD-Verarbeitung in Dao.

MstEmployeeDao.java



package com.example.dao;

import com.example.entity.MstEmployee;
import com.example.entity.UserEntity;
import org.seasar.doma.Dao;
import org.seasar.doma.Insert;
import org.seasar.doma.Select;
import org.seasar.doma.boot.ConfigAutowireable;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**Mitarbeiter-Master-Dao-Schnittstelle. */
@ConfigAutowireable
@Dao
public interface MstEmployeeDao {

  @Select
  List<MstEmployee> selectAll();

  @Select
  MstEmployee selectOne(String id);

  @Select
  UserEntity selectUser(String id);

  @Insert
  @Transactional
  int insert(MstEmployee mstEmployee);
}

Lassen Sie uns die Abfrage, die Sie mit dieser Methode durchführen möchten, in eine SQL-Datei umwandeln. Es ist wie man es benutzt. Platzieren Sie die SQL-Datei in "META-INF", indem Sie eine Ordnerhierarchie auf die gleiche Weise wie "package com.example.dao" in der obigen Klasse erstellen und ** den Dateinamen mit dem Methodennamen identisch machen. ** (Erweiterung ist SQL)

Sie können es leicht verstehen, indem Sie sich den Baum des Beispielprojekts ansehen.

tree


├── pom.xml ...Maven-Konfigurationsdatei
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           ├── App.java  ...Ausführbare Datei der Anwendung
    │   │           ├── SecurityConfig.java  ...Sicherheitseinstellungsdatei
    │   │           ├── dao  ...Speicherpaket der Doma2 DAO-Klasse
    │   │           │   ├── MstEmployeeDao.java
    │   │           │   ├── MstNewsDao.java
    │   │           │   └── MstRoleDao.java
    │   │           ├── dto
    │   │           │   └── NewsDto.java
    │   │           ├── entity  ...Speicherpaket für Doma2-Entitätsklassen
    │   │           │   ├── AuditEntity.java
    │   │           │   ├── MstEmployee.java
    │   │           │   ├── MstNews.java
    │   │           │   ├── MstRole.java
    │   │           │   ├── UserEntity.java
    │   │           │   └── listener
    │   │           │       └── AuditListener.java
    │   │           ├── security  ...Spring Security-Authentifizierungsfunktion
    │   │           │   ├── LoginUserDetails.java
    │   │           │   ├── LoginUserDetailsService.java
    │   │           │   └── UserInfo.java
    │   │           ├── service  ...Speicherpaket für Serviceklassen
    │   │           │   ├── NewsService.java
    │   │           │   └── NewsServiceImpl.java
    │   │           └── web ...Speicherpaket der Spring MVC-Controller-Klasse
    │   │               ├── LoginController.java
    │   │               ├── NewsController.java
    │   │               ├── TopController.java
    │   │               └── manager
    │   │                   ├── NewsForm.java
    │   │                   ├── NewsManagerEditController.java
    │   │                   ├── NewsManagerListController.java
    │   │                   └── NewsManagerRegisterController.java
    │   └── resources
    │       ├── META-INF
    │       │   └── com
    │       │       └── example
    │       │           └── dao ...Doma2 SQL-Dateispeicherpaket
    │       │               ├── MstEmployeeDao
    │       │               │   ├── selectAll.sql
    │       │               │   ├── selectOne.sql
    │       │               │   └── selectUser.sql
    │       │               ├── MstNewsDao
    │       │               │   ├── selectAll.sql
    │       │               │   ├── selectNewsDtoByCond.sql
    │       │               │   └── selectOneNewsDto.sql
    │       │               └── MstRoleDao
    │       │                   └── selectAll.sql
    │       ├── ValidationMessages.properties ...Einstellungsdatei für die Validierungsprüfungsnachricht
    │       ├── application.yml ...Anwendungseinstellungsdatei
    │       ├── data.sql ...DDL-Anweisung, die beim Start ausgeführt werden soll
    │       ├── messages.properties ...Überprüfungsnachricht zur Überprüfung der Formulareigenschaft
    │       ├── schema.sql ...DML-Anweisung, die beim Start ausgeführt werden soll
    │       ├── static ...Statischer Dateispeicherordner, der sich zur Laufzeit direkt unter dem Kontextstamm befindet
    │       │   ├── css
    │       │   │   └── lib ...CSS-Bibliotheksspeicherordner
    │       │   │       ├── bootstrap-theme.min.css
    │       │   │       └── bootstrap.min.css
    │       │   ├── fonts ...Speicherordner für Schriftarten(Bootstrap)
    │       │   │   ├── glyphicons-halflings-regular.eot
    │       │   │   ├── glyphicons-halflings-regular.svg
    │       │   │   ├── glyphicons-halflings-regular.ttf
    │       │   │   ├── glyphicons-halflings-regular.woff
    │       │   │   └── glyphicons-halflings-regular.woff2
    │       │   ├── js
    │       │   │   └── lib ...Speicherordner der JavaScript-Bibliothek
    │       │   │       └── bootstrap.min.js
    │       │   └── movie
    │       │       ├── sample
    │       │       │   └── nc144421.mp4
    │       │       └── thumbnail
    │       │           ├── nc144421.jpg
    │       │           └── nc144555.jpg
    │       └── templates ...Thymeleaf Template-Speicherordner
    │           ├── learning
    │           │   └── learning.html
    │           ├── loginForm.html
    │           ├── manager
    │           │   ├── managerLayout.html
    │           │   └── news
    │           │       ├── edit
    │           │       │   ├── newsEditComplete.html
    │           │       │   ├── newsEditConfirm.html
    │           │       │   └── newsEditInput.html
    │           │       ├── list
    │           │       │   └── newsList.html
    │           │       └── register
    │           │           ├── newsRegisterComplete.html
    │           │           ├── newsRegisterConfirm.html
    │           │           └── newsRegisterInput.html
    │           ├── news
    │           │   └── news.html
    │           └── top
    │               └── top.html
    └── test ...Testcode-Speicherordner
        └── java
            └── com
                └── example
                    └── service
                        └── NewsServiceImplTest.java

Wie schreibe ich Parameter?

Sie können Dao-Klassenvariablen und SQL-Dateivariablen binden, indem Sie die SQL-Datei wie unten gezeigt schreiben.

selectOne



SELECT
	employee_id,
	employee_last_name,
	employee_first_name,
	role_id
FROM mst_employee
WHERE
  employee_id = /* id */'employee_id';

Darüber hinaus kann der dynamische Zustand durch Schreiben wie folgt ausgedrückt werden. Sie können if-Anweisungen und Anmerkungen verwenden.

selectNewsDtoByCond.sql



select
  n.mst_news_id id,
  n.role_id role_id,
  r.role_name role_nm,
  n.subject subject,
  n.url url,
  n.version version
FROM
  mst_news n
INNER JOIN
  mst_role r
ON
  n.role_id = r.role_id
WHERE
/*%if @isNotEmpty(url) */
    n.url LIKE /* @prefix(url) */'http'
/*%end*/
/*%if @isNotEmpty(subject) */
AND
    n.subject LIKE /* @prefix(subject) */'heute'
/*%end*/
/*%if @isNotEmpty(roleId) */
AND
    n.role_id = /* roleId */'01'
/*%end*/
ORDER BY
  n.mst_news_id

Ich habe JPA verwendet, um auf die Datenbank von Spring Boot zuzugreifen, aber diese scheint der Standard zu sein.

Recommended Posts

Datenbankverknüpfung mit doma2 (Spring Boot)
Mit Spring Boot herunterladen
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Verwenden Sie die Standardauthentifizierung mit Spring Boot
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Hot Deploy mit Spring Boot-Entwicklung
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot
Erhalten Sie Validierungsergebnisse mit Spring Boot
(Intellij) Hallo Welt mit Spring Boot
Erstellen Sie eine App mit Spring Boot
Frühling mit Kotorin ―― 9. Datenbankmigration ―― Flyway
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
Google Cloud Platform mit Spring Boot 2.0.0
Ich habe GraphQL mit Spring Boot ausprobiert
[Java] LINE-Integration mit Spring Boot
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Die Nachrichtenkooperation begann mit Spring Boot
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
HTTPS mit Spring Boot und Let's Encrypt
Versuchen Sie es mit Spring Boot mit VS-Code
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async
Zusammenfassung der Grundeinstellungen für Spring Boot, Doma2, Gradle
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
(IntelliJ + gradle) Hallo Welt mit Spring Boot
Verwenden Sie den Cache mit EhCashe 2.x mit Spring Boot
Formularklassenvalidierungstest mit Spring Boot
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Erreichen Sie die BASIC-Authentifizierung mit Spring Boot + Spring Security
Fordern Sie Spring Boot heraus
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel