ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • bank app4 - h2 db 초기 값 설정
    spring boot 2023. 4. 14. 14:37

    bank app - h2 db 초기 값 설정

    학습 목표

    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

     

     

     

     

     

    table.sql

    -- 유저 테이블 설계해 보기 
    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() 
    );

     

     

    data.sql

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

     

     

     

    결과 확인

    http://localhost:8080/h2-console

    'spring boot' 카테고리의 다른 글

    bank app6 - 화면구현(1)  (0) 2023.04.17
    bank app5 - MyBatis 설정  (0) 2023.04.17
    bank app3 - 모델링  (0) 2023.04.14
    bank app2 - 네이밍  (0) 2023.04.14
    bank app1 - 프로젝트 설정  (0) 2023.04.14
Designed by Tistory.