spring-boot
Spring-Boot + JDBC
Sök…
Introduktion
Spring Boot kan användas för att bygga och upprätthålla en SQL Relational DataBase. Du kan välja att ansluta till en H2 i minnet DataBase med Spring Boot, eller kanske välja att ansluta till MySql DataBase, det är helt ditt val. Om du vill utföra CRUD-operationer mot din DB kan du göra det med JdbcTemplate-böna, denna böna kommer automatiskt att tillhandahållas av Spring Boot. Spring Boot hjälper dig genom att tillhandahålla automatisk konfiguration av några vanligt använda bönor relaterade till JDBC.
Anmärkningar
För att komma igång går du i din st förmörkelse till nytt -> Spring Starter Project -> fyll i dina Maven-koordinater -> och lägg till nästa beroenden:
Under SQL-fliken -> lägg till JDBC + lägg till MySql (om MySql är ditt val).
För Mysql måste du också lägga till MySql Java Connector.
I din Spring Boot application.properties-fil (din Spring Boot-konfigurationsfil) måste du konfigurera dina datakälla-referenser till MySql DB:
- spring.datasource.url
- spring.datasource.username
- spring.datasource.password
- spring.datasource.driver-klass-namn
till exempel:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Lägg till följande två filer under resursmappen:
schema.sql -> varje gång du kör din applikation kommer Spring Boot att köra den här filen, inuti den antar du att skriva ditt DB-schema, definiera tabeller och deras relationer.
data.sql -> varje gång du kör din ansökan Spring Boot kör denna fil, inuti den, antar du att skriva data som kommer att infogas i din tabell som en initial initiering.
Spring Boot ger dig JdbcTemplate bönor automatiskt så att du direkt kan använda den så här:
@Autowired
private JdbcTemplate template;
utan några andra konfigurationer.
schema.sql-fil
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`)
);
Första JdbcTemplate Boot-app
@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(..., ..., ..., ...);