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.
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
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