spring-boot
Spring-Boot + JDBC
Suche…
Einführung
Mit Spring Boot kann eine relationale SQL-Datenbank erstellt und beibehalten werden. Sie können wählen, ob Sie mit Spring Boot eine Verbindung zu einer H2 in der Speicherdatenbank herstellen möchten, oder Sie wählen möglicherweise eine Verbindung zu MySql DataBase. Wenn Sie CRUD-Vorgänge für Ihre Datenbank ausführen möchten, können Sie dies mit dem JdbcTemplate-Bean tun. Dieses Bean wird automatisch von Spring Boot bereitgestellt. Spring Boot hilft Ihnen dabei, indem Sie die automatische Konfiguration einiger häufig verwendeter Beans für JDBC bereitstellen.
Bemerkungen
Um zu beginnen, gehen Sie in Ihrer sts-Finsternis auf neu -> Spring Starter Project -> geben Sie Ihre Maven-Koordinaten ein -> und fügen Sie die nächsten Abhängigkeiten hinzu:
Auf der Registerkarte SQL -> add JDBC + fügen Sie MySql hinzu (wenn MySql Ihre Wahl ist).
Für MySQL müssen Sie auch den MySQL-Java-Connector hinzufügen.
In Ihrer Spring Boot-Datei application.properties (Ihre Spring Boot-Konfigurationsdatei) müssen Sie Ihre Datenquellenberechtigungsnachweise für MySql DB konfigurieren:
- spring.datasource.url
- spring.datasource.username
- spring.datasource.password
- spring.datasource.driver-klassenname
zum Beispiel:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Fügen Sie unter dem Ressourcenordner die nächsten zwei Dateien hinzu:
schema.sql -> Jedes Mal, wenn Sie Ihre Anwendung ausführen, führt Spring Boot diese Datei aus, in der Sie Ihr DB-Schema schreiben, Tabellen und ihre Beziehungen definieren.
data.sql -> Jedes Mal, wenn Sie Ihre Anwendung ausführen, führt Spring Boot diese Datei aus. In dieser Datei werden Daten geschrieben, die als Initialisierung in Ihre Tabelle eingefügt werden.
Spring Boot stellt Ihnen die JdbcTemplate-Bean automatisch zur Verfügung, sodass Sie sie sofort wie folgt verwenden können:
@Autowired
private JdbcTemplate template;
ohne andere Konfigurationen.
schema.sql-Datei
CREATE SCHEMA IF NOT EXISTS `backgammon`;
USE `backgammon`;
DROP TABLE IF EXISTS `user_in_game_room`;
DROP TABLE IF EXISTS `game_users`;
DROP TABLE IF EXISTS `user_in_game_room`;
CREATE TABLE `game_users`
(
`user_id` BIGINT NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(255) NOT NULL,
`last_name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL UNIQUE,
`user_name` VARCHAR(255) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`role` VARCHAR(255) NOT NULL,
`last_updated_date` DATETIME NOT NULL,
`last_updated_by` BIGINT NOT NULL,
`created_date` DATETIME NOT NULL,
`created_by` BIGINT NOT NULL,
PRIMARY KEY(`user_id`)
);
DROP TABLE IF EXISTS `game_rooms`;
CREATE TABLE `game_rooms`
(
`game_room_id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`private` BIT(1) NOT NULL,
`white` BIGINT DEFAULT NULL,
`black` BIGINT DEFAULT NULL,
`opened_by` BIGINT NOT NULL,
`speed` BIT(3) NOT NULL,
`last_updated_date` DATETIME NOT NULL,
`last_updated_by` BIGINT NOT NULL,
`created_date` DATETIME NOT NULL,
`created_by` BIGINT NOT NULL,
`token` VARCHAR(255) AS (SHA1(CONCAT(`name`, "This is a qwe secret 123", `created_by`, `created_date`))),
PRIMARY KEY(`game_room_id`)
);
CREATE TABLE `user_in_game_room`
(
`user_id` BIGINT NOT NULL,
`game_room_id` BIGINT NOT NULL,
`last_updated_date` DATETIME NOT NULL,
`last_updated_by` BIGINT NOT NULL,
`created_date` DATETIME NOT NULL,
`created_by` BIGINT NOT NULL,
PRIMARY KEY(`user_id`, `game_room_id`),
FOREIGN KEY (`user_id`) REFERENCES `game_users`(`user_id`),
FOREIGN KEY (`game_room_id`) REFERENCES `game_rooms`(`game_room_id`)
);
Erste JdbcTemplate-Startanwendung
@SpringBootApplication
@RestController
public class SpringBootJdbcApplication {
@Autowired
private JdbcTemplate template;
@RequestMapping("/cars")
public List<Map<String,Object>> stocks(){
return template.queryForList("select * from car");
}
public static void main(String[] args) {
SpringApplication.run(SpringBootJdbcApplication.class, args);
}
}
data.sql
insert into game_users values(..., ..., ..., ...);
insert into game_users values(..., ..., ..., ...);
insert into game_users values(..., ..., ..., ...);