성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

Data Model Class 본문

백엔드개발/JDBC

Data Model Class

hyemi_flora 2023. 11. 13. 11:55

 

package database;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

 

public class J06_DataModelClass {

 

        /*

                # 데이터 모델 클래스

                - db에서 꺼낸 데이터를 담아놓는 용도로 사용하는 클래스

                - 데이터를 매개변수 등으로 활용하기 편리한 상태

                - DTO 또는 VO 등으로 불린다

        */

        

        // 사원정보를 다른 메서드에 반환하고 싶다.

        

        

        public static void main(String[] args) {

                String sql ="SELECT * FROM employees";

                try (

                        Connection conn = JdbcConnection.getConnection();

                        PreparedStatement pstmt = conn.prepareStatement(sql);

                        ResultSet rs = pstmt.executeQuery();        

                ){

                        //컬럼개수

                        int columnCount = rs.getMetaData().getColumnCount();               

                        while(rs.next()) {

                                System.out.println(rs.getInt("employee_id"));

                                System.out.println(rs.getString("first_name"));

                                System.out.println(rs.getString("last_name"));

                                System.out.println(rs.getString("email"));

                                System.out.println(rs.getString("phone_number"));

                                System.out.println("---------------------");

                                

//                                for(int i = 1; i <= columnCount; ++i) {

//                                        System.out.printf(

//                                                        //%s 들어 갈 수 있는데. 그 자리수가 metadata안에 있기 때문에 %-s 로 만든것.

//                                                        "%-"+ rs.getMetaData().getColumnDisplaySize(i)+"s",

//                                                        rs.getObject(i) + "\t");

                                //}

                                }

                                System.out.println();

                        

                } catch (SQLException e) {

                        e.printStackTrace();

                }

 

        }

 

}

 

 

 

 

=============>

 

 

package database;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

 

import database.model.Employee;

 

public class J06_DataModelClass {

 

        

        public static void main(String[] args) {

 

                

 

                String sql ="SELECT * FROM employees";

                

                try (

                        Connection conn = JdbcConnection.getConnection();

                        PreparedStatement pstmt = conn.prepareStatement(sql);

                        ResultSet rs = pstmt.executeQuery();        

                ){

                        //컬럼개수

                        int columnCount = rs.getMetaData().getColumnCount();

                        

                        // 테이블의 한 행을 인스턴스화 해놓으면 Collection에서도 활용할 수 있다.

                        

                        List<Employee> employees = new ArrayList<>();

                        

                        while(rs.next()) {

                                // 꺼낸 데이터를 인스턴스화 해놓으면 여기저기 사용하기 편리해진다.

                                Employee emp = new Employee(

                                                rs.getInt("employee_id"),

                                                rs.getString("first_name"),

                                                rs.getString("last_name"),

                                                rs.getString("email"),

                                                rs.getString("phone_number")

                                                );

                                //System.out.println(emp);

                                // database.model.Employee@17aad511 toString()이 안된상태

                                //  package database.model => Employee => toString()오버라이드 하면 -> William Gietz출력

                                

                                employees.add(emp);

                                

                                }

                        System.out.println(employees);

                                System.out.println();

                        

                } catch (SQLException e) {

                        e.printStackTrace();

                }

 

        }

 

}

 

 

 

package database.model;

 

 

// 데이터모델 클래스

public class Employee {

 

        // DB로 부터 null이 나올수 있음으로 기본타입보다 Wrapper 클래스 사용하는것이 좋다

        

        Integer employee_id;

        String first_name;

        String last_name;

        String email;

        String phone_number;

 

        

        

        public Employee(

                        Integer employee_id,

                        String first_name,

                        String last_name,

                        String email,

                        String phone_number

                        ) {

                this.employee_id = employee_id;

                this.first_name = first_name;

                this.last_name = last_name;

                this.email = email;

                this.phone_number = phone_number;

 

        }

        

        @Override

        public String toString() {

                // TODO Auto-generated method stub

                return String.format("%s %s", first_name, last_name);

        }

}

 

 

'백엔드개발 > JDBC' 카테고리의 다른 글

quiz  (1) 2023.11.13
DB와 연동되는 경품 추첨 이벤트 구현 QUIZ  (0) 2023.11.13
Meta data  (1) 2023.11.13
Transaction  (0) 2023.11.13
Execute Update  (0) 2023.11.13