[JAVA] Découpez SQL en fichier de propriété avec jdbcTemplate of spring boot

1.Tout d'abord

Dans l'article précédent "Accédez au h2db intégré de Spring Boot avec jdbcTemplate", j'ai écrit que "Il est également possible de sortir avec @ Value". J'ai fait. Ensuite, on m'a demandé de m'apprendre comment le faire, alors j'ai écrit cet article.

Par défaut, spring boot peut lire le fichier src / main / application.properties (.yml) et le référencer avec @ Value. Cependant, il n'est pas souhaitable d'écrire du code SQL susceptible d'augmenter le nombre de définitions dans ce fichier de propriétés principal. Donc, cette fois, je voudrais expliquer comment définir un fichier de propriétés dédié au SQL de jdbcTemplate.

2. Mise en œuvre

Seuls les contenus liés à la découpe de SQL vers un fichier externe sont décrits. Veuillez vous référer à Article précédent pour l'explication de jdbcTemplate. Le but est simplement de spécifier le fichier avec l'annotation @ org.springframework.context.annotation.PropertySource. Le nom du champ ressemble à une constante car le code source précédent fonctionne tel quel.

FileInfoRepository.java


// ... omitted

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

// ... omitted

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

    private static final Logger LOGGER = LoggerFactory.getLogger(FileInfoRepository.class);
    
    //★ Point
    @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

**(Mise en garde) Puisqu'il s'agit d'un fichier de propriétés, il doit être décrit en une seule ligne. Veuillez noter que même un SQL long ne peut pas être interrompu au milieu. En passant, c'est difficile à voir car vous ne pouvez pas couper la ligne à la valeur où SQL est décrit lorsque vous la définissez sur yml. ** **

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

Cette fois, j'ai expliqué comment définir un fichier de propriétés dédié au SQL de jdbcTemplate. Comme vous pouvez le voir sur les résultats, la lisibilité n'est pas bonne. Je pense que le mérite de jdbcTemplate est la simplicité qui est rapide et facile à utiliser, mais ce mérite est perdu. Au lieu de cela, le désagrément lié à l'écriture de SQL dans un fichier Java est éliminé. Lors de la conversion de SQL en fichier externe, il est préférable de prendre en compte les avantages et les inconvénients de chaque PJ.

Recommended Posts

Découpez SQL en fichier de propriété avec jdbcTemplate of spring boot
Comment se lier avec un fichier de propriétés dans Spring Boot
[Spring Boot] Comment se référer au fichier de propriétés
Étapes pour rendre Spring Boot capable de faire référence à la valeur dans le fichier de propriétés
Téléchargement de fichiers avec Spring Boot
Comment démarrer par environnement avec Spring Boot de Maven
Comment réaliser un téléchargement de fichiers volumineux avec Rest Template of Spring
Comment diviser un fichier de message Spring Boot
[Spring Boot] Je veux ajouter mon propre fichier de propriétés et obtenir la valeur avec env.getProperty ().
Comment lire le corps de la requête plusieurs fois avec Spring Boot + Spring Security
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Essayez d'implémenter la fonction de connexion avec Spring Boot
Essayez d'automatiser la migration avec Spring Boot Flyway
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Télécharger avec Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC
[Note] Fichier de configuration lors de l'utilisation de Logback avec Spring Boot
Mappez automatiquement DTO aux entités avec l'API Spring Boot
Un mémorandum de dépendance à Spring Boot2 x Doma2
05. J'ai essayé de supprimer la source de Spring Boot
J'ai essayé de réduire la capacité de Spring Boot
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Créer Restapi avec Spring Boot (jusqu'à l'exécution de l'application)
Tentative de SSR Vue.js avec Spring Boot et GraalJS
Téléchargement de fichiers avec Spring Boot (ne pas utiliser de fichier en plusieurs parties)
Je souhaite lire le fichier de propriétés avec un nom de fichier autre que application.yml ou application- [nom du profil] .yml avec Spring Boot
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
Sortez le journal d'accès Tomcat intégré à la sortie standard avec Spring Boot
Essayez Spring Boot de 0 à 100.
Générer un code à barres avec Spring Boot
À propos de la fonction de Spring Boot en raison de différentes versions
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Une histoire remplie des bases de Spring Boot (résolu)
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Introduction à Spring Boot ① ~ DI ~
Spring Boot commençant par copie
Jusqu'à INSERT et SELECT sur Postgres avec botte de printemps et feuille de thym
Introduction à Spring Boot ② ~ AOP ~
Connectez-vous à la base de données avec spring boot + spring jpa et effectuez l'opération CRUD
Spring Boot à partir de Docker
Flux jusqu'à la sortie des données de la table à afficher avec Spring Boot
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Introduction à Spring Boot, partie 1
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
Introduction de la bibliothèque ff4j qui réalise le basculement de fonctionnalités avec Spring Boot