Recherche…


Introduction

Spring Boot peut être utilisé pour créer et conserver une base de données relationnelle SQL. Vous pouvez choisir de vous connecter à un H2 en mémoire DataBase en utilisant Spring Boot, ou peut-être choisir de vous connecter à MySql DataBase, c'est votre choix. Si vous souhaitez effectuer des opérations CRUD sur votre base de données, vous pouvez le faire en utilisant le bean JdbcTemplate, ce bean sera automatiquement fourni par Spring Boot. Spring Boot vous aidera en fournissant une configuration automatique de certains beans couramment utilisés liés à JDBC.

Remarques

Pour commencer, dans votre sts eclipse allez à nouveau -> Spring Starter Project -> remplissez vos coordonnées Maven -> et ajoutez les dépendances suivantes:

Sous l'onglet SQL -> ajoutez JDBC + ajoutez MySql (si MySql est votre choix).

Pour Mysql, vous devrez également ajouter le connecteur Java MySql.

Dans votre fichier Spring Boot application.properties (votre fichier de configuration Spring Boot), vous devez configurer vos informations d'identification de source de données sur la base de données MySql:

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

par exemple:

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

Sous le dossier resources, ajoutez les deux fichiers suivants:

  1. schema.sql -> chaque fois que vous exécutez votre application, Spring Boot exécute ce fichier, à l'intérieur duquel vous devez écrire votre schéma de base de données, définir des tables et leurs relations.

  2. data.sql -> Chaque fois que vous exécutez votre application, Spring Boot exécute ce fichier, à l'intérieur duquel vous devez écrire des données qui seront insérées dans votre table en tant qu'initialisation initiale.

Spring Boot vous fournira automatiquement le bean JdbcTemplate pour que vous puissiez instantanément l'utiliser comme ceci:

@Autowired
private JdbcTemplate template;

sans aucune autre configuration.

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

Première application de démarrage 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow