Szukaj…


Wprowadzenie

Spring Boot może być wykorzystany do zbudowania i utrzymania SQL Relational DataBase. Możesz połączyć się z bazą danych H2 w bazie danych przy użyciu Spring Boot, a może połączyć się z bazą danych MySql, to całkowicie twój wybór. Jeśli chcesz przeprowadzić operacje CRUD na swoim DB, możesz to zrobić za pomocą komponentu JdbcTemplate, ten komponent zostanie automatycznie dostarczony przez Spring Boot. Spring Boot pomoże ci, zapewniając automatyczną konfigurację niektórych często używanych ziaren związanych z JDBC.

Uwagi

Aby rozpocząć, w swoim zaćmieniu sts przejdź do nowego -> Spring Starter Project -> podaj swoje współrzędne Maven -> i dodaj kolejne zależności:

W zakładce SQL -> dodaj JDBC + dodaj MySql (jeśli MySql jest twoim wyborem).

W przypadku MySQL musisz także dodać MySql Java Connector.

W pliku Spring. application.properties (plik konfiguracyjny Spring Boot) musisz skonfigurować poświadczenia źródła danych na MySql DB:

  1. spring.datasource.url
  2. spring.datasource.username
  3. spring.datasource.password
  4. spring.datasource.driver-class-name

na przykład:

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

W folderze zasobów dodaj dwa kolejne pliki:

  1. schema.sql -> za każdym razem, gdy uruchomisz aplikację Spring Boot uruchomi ten plik, wewnątrz niego masz pisać schemat DB, definiować tabele i ich relacje.

  2. data.sql -> za każdym razem, gdy uruchomisz aplikację Spring Boot uruchomi ten plik, wewnątrz niego należy zapisać dane, które zostaną wstawione do tabeli jako inicjalizacja początkowa.

Spring Boot automatycznie zapewni ci komponent JdbcTemplate, dzięki czemu możesz od razu użyć go w następujący sposób:

@Autowired
private JdbcTemplate template;

bez żadnych innych konfiguracji.

plik schema.sql

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`)
);

Pierwsza aplikacja rozruchowa JdbcTemplate

@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(..., ..., ..., ...);


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow