H2 메모리 DB 초기 테이블 설정 및 초기 데이터 셋팅
1. yml 파일 확인 및 추가 설정
2. H2 인 메모리 접근 및 데이터 확인
yml 설정
server:
port: 8080
servlet:
encoding:
charset: utf-8
force: true
spring:
mvc:
view:
prefix: /WEB_INF/view/
suffix: .jsp
datasource:
url: jdbc:h2:mem:testdb;MODE=MySQL
driver-class-name: org.h2.Driver
username: sa
password:
sql:
init:
schema-locations:
- classpath:db/table.sql
data-locations:
- classpath:db/data.sql
h2:
console:
enabled: true
output:
ansi:
enabled: always
초기 스키마 설정
-- 유저 테이블 설계해 보기
CREATE TABLE user_tb(
id int AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) not null UNIQUE,
password VARCHAR(30) not null,
fullname VARCHAR(50) not null,
created_at TIMESTAMP not null DEFAULT now()
);
-- 사용자에 계좌 정보 테이블 설계
CREATE TABLE account_tb(
id int AUTO_INCREMENT PRIMARY KEY,
number VARCHAR(30) not null UNIQUE,
password VARCHAR(20) not null,
balance BIGINT not null COMMENT '계좌 잔액',
user_id int,
created_at TIMESTAMP not null DEFAULT now()
);
-- 입금 내역 저장
-- 출금 내역 저장
-- 사용자간 이체 내역 저장
-- 사용자들에 history 테이블 설계
-- BIGINT 8바이트 크기에 정수형
-- 조(10에 12) -- 경(10에 16승) -- 해(10에20승)
-- 자(10에 24) -- 양(10에 28)
CREATE TABLE history_tb(
id int AUTO_INCREMENT PRIMARY key COMMENT '거래 내역 ID',
amount BIGINT not null COMMENT '거래 금액',
w_account_id int COMMENT '출금 계좌 id',
d_account_id int COMMENT '입금 계좌 id',
w_balance BIGINT COMMENT '출금 요청된 계좌에 잔액',
d_balance BIGINT COMMENT '입금 요청된 계좌에 잔액',
created_at TIMESTAMP not NULL DEFAULT now()
);
초기 데이터 등록
INSERT INTO user_tb(username, password, fullname, created_at) values('길동', '1234',
'고', now());
INSERT INTO user_tb(username, password, fullname, created_at) values('둘리', '1234',
'애기공룡', now());
INSERT INTO user_tb(username, password, fullname, created_at) values('콜', '1234',
'마이', now());
INSERT INTO account_tb(number, password, balance, user_id, created_at)
values('1111', '1234', 900, 1, now());
INSERT INTO account_tb(number, password, balance, user_id, created_at)
values('2222', '1234', 1100, 2, now());
INSERT INTO account_tb(number, password, balance, user_id, created_at)
values('333', '1234', 0, 3, now());
-- 이체 내역을 기록 ( 1번 계좌에서 2번 계좌로 100원을 이체 한다)
INSERT INTO history_tb(amount, w_balance, d_balance,
w_account_id, d_account_id, created_at)
VALUES (100, 900, 1100, 1, 2, now());
-- 출금 내역 ( 1번계좌에서 100원을 출금 처리 )
INSERT INTO history_tb(amount, w_balance, d_balance,
w_account_id, d_account_id, created_at)
VALUES (100, 800, null, 1, null, now());
-- 입금 내역 (1번 계좌에 500원 입금 처리 )
INSERT INTO history_tb(amount, w_balance, d_balance,
w_account_id, d_account_id, created_at)
VALUES (500, null, 700, null, 1, now());
결과 확인
'Spring boot > spring boot 앱 만들어 보기 2 단원' 카테고리의 다른 글
bank app 화면 구현(1) (0) | 2023.04.17 |
---|---|
bank app MyBatis 설정 (0) | 2023.04.17 |
bank app 모델링 (0) | 2023.04.17 |
패키지 설정 (0) | 2023.04.17 |
프로젝트 설정 (0) | 2023.04.17 |