サーチ…


前書き

Springのブートは、SQLリレーショナルデータベースを構築して永続化するために使用できます。 Springブートを使用してメモリデータベース内のH2に接続するか、おそらくMySql DataBaseに接続するかを選択できます。これは完全に選択したものです。 DBに対してCRUD操作を行う場合は、JdbcTemplate Beanを使用して実行できます。このBeanは自動的にSpring Bootによって提供されます。 Spring Bootは、JDBCに関連する一般的に使用されるいくつかのBeanの自動構成を提供することによって役立ちます。

備考

開始するには、あなたの日食で新しい - >春の初心者のプロジェクト - >あなたのMavenの座標を記入 - >次の依存関係を追加してください:

SQLタブの下で - > JDBCを追加し、MySqlを追加します(MySqlを選択した場合)。

Mysqlの場合は、MySql Java Connectorも追加する必要があります。

あなたのSpring Boot application.propertiesファイル(Springブート設定ファイル)で、データソースの資格情報をMySql DBに設定する必要があります:

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

例えば:

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

resourcesフォルダーの下に次の2つのファイルを追加します。

  1. schema.sql - >アプリケーションを実行するたびにSpring Bootはこのファイルを実行します。その中にDBスキーマを記述し、テーブルとその関係を定義します。

  2. data.sql - >あなたがあなたのアプリケーションを実行するたびにSpring Bootはこのファイルを実行します。その中に、初期初期化としてあなたのテーブルに挿入されるデータを書き込むと仮定します。

Springブートは自動的にJdbcTemplate Beanを提供しますので、すぐに次のように使用できます:

@Autowired
private JdbcTemplate template;

他の構成は一切ありません。

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

最初の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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow