[Java] 웹 페이지의 JSON을 가져와 DB 테이블에 삽입하기

2023. 3. 16. 12:20·Java/Base
728x90
728x90

album 테이블

더보기
1
2
3
4
5
6
7
8
9
10
CREATE DATABASE albumdb;
USE albumdb;
 
CREATE TABLE album (
    userId INT,
    id INT PRIMARY KEY,
    title VARCHAR(200)
);
 
SELECT * FROM album;
cs

 

DBHelper

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class DBHelper {
 
    private static final String DB_HOST = "localhost";
    private static final String DB_PORT = "3306";
    private static final String DB_DATABASE_NAME = "albumdb";
    private static final String DB_CHARSET = "UTF-8";
    private static final String DB_USER_NAME = "root";
    private static final String DB_PASSWORD = "1234";
 
    private Connection conn;
    private static DBHelper dbHelper;
 
    private DBHelper() {
    }
 
    public static DBHelper getInstance() {
        if (dbHelper == null) {
            dbHelper = new DBHelper();
        }
        return dbHelper;
    }
 
    public Connection getConnection() {
        if (conn == null) {
            String urlFormat = "jdbc:mysql://%s:%s/%s?serverTimezone=Asia/Seoul&characterEncoding=%s";
            String url = String.format(urlFormat, DB_HOST, DB_PORT, DB_DATABASE_NAME, DB_CHARSET);
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                conn = DriverManager.getConnection(url, DB_USER_NAME, DB_PASSWORD);
                System.out.println(">> DB 연결 완료 <<");
            } catch (Exception e) {
                System.out.println(">> DBHelper 에서 오류가 발생 했어! <<");
                e.printStackTrace();
            }
        }
        return conn;
    }
 
    public void closeConnection() {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        conn = null;
    }
 
}
Colored by Color Scripter
cs

 

AlbumDao

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class AlbumDao implements IAlbumDao {
 
    private Connection conn;
    private PreparedStatement pstmt;
    private ResultSet rs;
 
    public AlbumDao() {
        conn = DBHelper.getInstance().getConnection();
    }
 
    @Override
    public int insert(AlbumDto dto) {
        int result = 0;
        String query = " INSERT INTO album VALUES (?, ?, ?) ";
 
        try {
            pstmt = conn.prepareStatement(query);
            pstmt.setInt(1, dto.getUserId());
            pstmt.setInt(2, dto.getId());
            pstmt.setString(3, dto.getTitle());
            result = pstmt.executeUpdate(); // 성공 시 1
 
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }
 
}
Colored by Color Scripter
cs

 

AlbumService

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class AlbumService {
 
    private AlbumDao albumDao;
    
    public AlbumService() {
        albumDao = new AlbumDao();
    }
    
    // 앨범 추가하는 로직
    public int addAlbum(AlbumDto dto) {
        int result = 0;
        
        result = albumDao.insert(dto);
        return result;
    }
    
}
Colored by Color Scripter
cs

 

AlbumController

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class AlbumController {
 
    private AlbumService albumService;
 
    public AlbumController() {
        albumService = new AlbumService();
    }
 
    // 앨범 추가 요청
    public int requestAddAlbum(AlbumDto dto) {
        int responseInt = 0;
 
        // 성공했다면 1 반환
        responseInt = albumService.addAlbum(dto);
 
        // 실패했을 때만 콘솔로 알려줌
        if (responseInt == 0) {
            System.out.println("추가 요청이 실패했습니다.");
        }
 
        return responseInt;
    }
 
}
Colored by Color Scripter
cs

 

Main

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class MainTest {
 
    public static void main(String[] args) {
 
        try {
            URL url = new URL("https://jsonplaceholder.typicode.com/albums");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.connect();
 
            int statusCode = conn.getResponseCode();
 
            if (statusCode == 200) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
 
                String line = null;
                StringBuffer sb = new StringBuffer();
 
                while ((line = reader.readLine()) != null) {
                    sb.append(line);
                }
 
                String resultStr = sb.toString();
                Gson gson = new Gson();
 
                Type listType = new TypeToken<List<AlbumDto>>() {
                }.getType();
                ArrayList<AlbumDto> albumList = gson.fromJson(resultStr, listType);
 
                // 리스트에 있는 객체들을 DB에 담기
                AlbumController albumController = new AlbumController();
 
                for (AlbumDto albumDto : albumList) {
                    albumController.requestAddAlbum(albumDto);
                    System.out.println(albumDto);
                }
 
            } // end of if
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Colored by Color Scripter
cs

 

 


실행 후 SQL 테이블 확인

 

 

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Base' 카테고리의 다른 글

[Java] 람다 표현식 (Lambda expression)  (0) 2023.03.22
[Java] 래퍼 클래스 (Wrapper class)  (0) 2023.03.22
[Java] Gson 클래스를 활용한 JSON Phasing  (0) 2023.03.15
[Java] JSON  (0) 2023.03.15
[Java] Statement와 PreparedStatement  (1) 2023.03.12
'Java/Base' 카테고리의 다른 글
  • [Java] 람다 표현식 (Lambda expression)
  • [Java] 래퍼 클래스 (Wrapper class)
  • [Java] Gson 클래스를 활용한 JSON Phasing
  • [Java] JSON
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    SEO
    tailwindcss
    js
    오블완
    SQL
    zapier
    git
    C#
    cs
    java
    Codeigniter
    Hotkeys
    php
    errorNote
    CSS
    SpringBoot
    typeScript
    면접
    jQuery
    http
    SWAGGER
    vuejs
    Wordpress
    HTML
    Android
    티스토리챌린지
    개발일지
    Swing
    jsp
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 웹 페이지의 JSON을 가져와 DB 테이블에 삽입하기
상단으로

티스토리툴바