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