spring-boot
Spring-Boot + JDBC
수색…
소개
스프링 부트를 사용하여 SQL 관계형 데이터베이스를 작성하고 유지할 수 있습니다. 스프링 부트를 사용하여 메모리 데이터베이스에 H2를 연결하거나 MySql DataBase에 연결하도록 선택할 수 있습니다.이 옵션은 완전히 선택입니다. DB에 대해 CRUD 연산을 수행하고 싶다면 JdbcTemplate 빈을 이용하면된다.이 빈은 자동으로 Spring Boot에 의해 제공된다. Spring Boot는 JDBC와 관련하여 일반적으로 사용되는 일부 빈의 자동 구성을 제공하여 도움을줍니다.
비고
시작하려면, 당신의 일식에서 새롭다 -> Spring Starter Project -> Maven 좌표를 채우기 -> 다음 의존성을 추가한다 :
SQL 탭에서 -> JDBC 추가 + MySql 추가 (MySql을 선택하는 경우).
MySQL의 경우 MySql Java Connector도 추가해야한다.
스프링 부트 application.properties 파일 (스프링 부트 구성 파일)에서 데이터 소스 자격 증명을 MySql DB로 구성해야합니다.
- spring.datasource.url
- spring.datasource.username
- spring.datasource.password
- 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 폴더 아래에 다음 두 파일을 추가하십시오.
schema.sql -> 응용 프로그램을 실행할 때마다 Spring Boot는이 파일을 실행하며, DB 스키마를 작성하고 테이블과 그 관계를 정의한다고 가정합니다.
data.sql -> 응용 프로그램을 실행할 때마다 Spring Boot가이 파일을 실행합니다. 그 안에는 초기 초기화로 테이블에 삽입 될 데이터를 쓰는 것으로 가정합니다.
Spring Boot는 JdbcTemplate 빈을 자동으로 제공하므로 즉시 다음과 같이 사용할 수 있습니다 :
@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(..., ..., ..., ...);