[JAVA] Schneiden Sie SQL in die Eigenschaftendatei mit jdbcTemplate von Spring Boot aus

1. Zuallererst

Im vorherigen Artikel "Zugriff auf das integrierte h2db des Spring Boot mit jdbcTemplate" schrieb ich: "Es ist auch möglich, mit" @ Value "auszugehen." Ich tat. Dann wurde ich gebeten, mir beizubringen, wie es geht, also schrieb ich diesen Artikel.

Standardmäßig kann Spring Boot die Datei "src / main / application.properties (.yml)" lesen und mit "@ Value" referenzieren. Es ist jedoch nicht wünschenswert, SQL zu schreiben, das wahrscheinlich die Anzahl der Definitionen in dieser Haupteigenschaftendatei erhöht. Dieses Mal möchte ich erklären, wie eine Eigenschaftendatei für SQL von jdbcTemplate definiert wird.

2. Implementierung

Es werden nur die Inhalte beschrieben, die sich auf das Ausschneiden von SQL in eine externe Datei beziehen. Weitere Informationen zu jdbcTemplate finden Sie unter Vorheriger Artikel. Es geht nur darum, die Datei mit der Annotation @ org.springframework.context.annotation.PropertySource anzugeben. Der Feldname sieht aus wie eine Konstante, da der vorherige Quellcode so funktioniert, wie er ist.

FileInfoRepository.java


// ... omitted

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;

// ... omitted

//★ Punkt
@PropertySource(value = "classpath:sql/FileInfoRepository.properties")
@Repository
public class FileInfoRepository {

    private static final Logger LOGGER = LoggerFactory.getLogger(FileInfoRepository.class);
    
    //★ Punkt
    @Value("${FileInfoReppsitory.INSERT_SQL}")
    String INSERT_SQL;
    
    @Value("${FileInfoReppsitory.DELETE_BY_KEY_SQL}")
    String DELETE_BY_KEY_SQL;
    
    @Value("${FileInfoReppsitory.UPDATE_BY_KEY_SQL}")
    String UPDATE_BY_KEY_SQL;
    
    @Value("${FileInfoReppsitory.FIND_ONE_SQL}")
    String FIND_ONE_SQL;
    
    @Value("${FileInfoReppsitory.FIND_ALL_SQL}")
    String FIND_ALL_SQL;

    @Autowired
    private NamedParameterJdbcTemplate jdbcTemplate;
    
    // omitted
}

src/main/resources/sql/FileInfoRepository.properties


FileInfoReppsitory.INSERT_SQL=INSERT INTO file_info (file_id, file_type, file_name, file_path, content_type, content_length, registered_date) values (:fileId, :fileType, :fileName, :filePath, :contentType, :contentLength, :registeredDate)
FileInfoReppsitory.DELETE_BY_KEY_SQL=DELETE FROM file_info WHERE file_id = :fileId
FileInfoReppsitory.UPDATE_BY_KEY_SQL=UPDATE file_info SET file_type = :fileType, file_name = :fileName, file_path = :filePath, content_type = :contentType, content_length = :contentLength, registered_date = :registeredDate WHERE file_id = :fileId
FileInfoReppsitory.FIND_ONE_SQL=SELECT file_id, file_type, file_name, file_path, content_type, content_length, registered_date FROM file_info WHERE file_id = :fileId
FileInfoReppsitory.FIND_ALL_SQL=SELECT file_id, file_type, file_name, file_path, content_type, content_length, registered_date FROM file_info ORDER BY file_type, registered_date

**(Hinweis) Da es sich um eine Eigenschaftendatei handelt, muss sie in einer Zeile beschrieben werden. Bitte beachten Sie, dass auch langes SQL in der Mitte nicht unterbrochen werden kann. Übrigens ist es schwer zu erkennen, da Sie die Zeile bei dem Wert, bei dem SQL beschrieben wird, nicht unterbrechen können, wenn Sie es auf yml setzen. ** ** **

FileInfoReppsitory:
   INSERT_SQL:
      INSERT INTO file_info (file_id, file_type, file_name, file_path, content_type, content_length, registered_date) values (:fileId, :fileType, :fileName, :filePath, :contentType, :contentLength, :registeredDate)

3. Schließlich

Dieses Mal habe ich erklärt, wie eine Eigenschaftendatei für SQL von jdbcTemplate definiert wird. Wie Sie den Ergebnissen entnehmen können, ist die Lesbarkeit nicht gut. Ich denke, das Verdienst von jdbcTemplate ist die Einfachheit, die schnell und einfach zu bedienen ist, aber dieses Verdienst geht verloren. Stattdessen wird der Ärger beim Schreiben von SQL in eine Java-Datei beseitigt. Bei der Konvertierung von SQL in eine externe Datei ist es besser, die Vor- und Nachteile der einzelnen PJ zu berücksichtigen.

Recommended Posts

Schneiden Sie SQL in die Eigenschaftendatei mit jdbcTemplate von Spring Boot aus
So binden Sie mit einer Eigenschaftendatei in Spring Boot
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
Datei-Upload mit Spring Boot
Booten nach Umgebung mit Spring Boot of Maven
So erzielen Sie mit Rest Template of Spring einen großen Datei-Upload
So teilen Sie eine Spring Boot-Nachrichtendatei
[Spring Boot] Ich möchte meine eigene Eigenschaftendatei hinzufügen und den Wert mit env.getProperty () abrufen.
So lesen Sie Request Body mit Spring Boot + Spring Security mehrmals
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Versuchen Sie, die Migration mit Spring Boot Flyway zu automatisieren
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Ich wollte Spring Boot in einem Multiprojekt gradle
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Mit Spring Boot herunterladen
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
[Hinweis] Festlegen der Datei bei Verwendung von Logback mit Spring Boot
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
Ein Memorandum über die Sucht nach Spring Boot2 x Doma2
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Erstellen Sie Restapi mit Spring Boot (bis zum Ausführen der App)
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Datei-Upload mit Spring Boot (keine mehrteilige Datei verwenden)
Ich möchte die Eigenschaftendatei mit einem anderen Dateinamen als application.yml oder application- [Profilname] .yml mit Spring Boot lesen
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
Geben Sie das integrierte Tomcat-Zugriffsprotokoll mit Spring Boot an die Standardausgabe aus
Versuchen Sie Spring Boot von 0 bis 100.
Generieren Sie mit Spring Boot einen Barcode
Über die Funktion von Spring Boot aufgrund unterschiedlicher Versionen
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Eine Geschichte voller Grundlagen von Spring Boot (gelöst)
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Einführung in Spring Boot ~ ~ DI ~
Spring Boot beginnt mit dem Kopieren
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Einführung in Spring Boot ② ~ AOP ~
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
Spring Boot beginnend mit Docker
Fluss bis zur Ausgabe von Tabellendaten, die mit Spring Boot angezeigt werden sollen
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
Einführung in Spring Boot Teil 1
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
Einführung der Bibliothek ff4j, die Feature Toggle mit Spring Boot realisiert