07/05

ONLYS2545·2023년 7월 5일
0

인덱스 --> where절에 걸리는 컬럼(인덱스o)이 데이터 15%이내에 사용


UNIQUE 제약조건 추가하는 법


예시

-> CREATE INDEX nickname_idx ON member_tb ( nickname );

uk를 걸면 인덱스 설정됨.


JDBC 실습


package db;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {
    public static Connection getInstance(){
      //MYSQL 연결 정보
        String url = "jdbc:mysql://127.0.0.1:3306/metadb";
        String username = "root";
        String password = "2ckgkqrur@";


        try {
            // Class.forName -> 클래스 내의 스태틱 블록 실행.
            Class.forName("com.mysql.cj.jdbc.Driver");
            //커넥션 -> 프로토콜이 적용된 소켓
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("DB assdf");
            return connection;
        } catch (Exception e) {
            System.out.println("DB erasdf :" + e.getMessage());
        }
        return null;
    }

    public static void main(String[] args) {
        getInstance();
    }
}

드라이버 찾는법


한글 깨질 때


  1. 첫번째 방법

2.두번째 방법


Class.forName


Class.forName
클래스를 메모리에 로드하는 역할
스태틱 변수, 스태틱 메서드, 스태틱 블록이 메모리에 로드된다.


모델링


Account, Transaction 만들기

SQL 테이블을 자바 클래스로 만든다.
--> Model 이라는 패키지를 만들어, SQL 테이블 상의 컬럼들을 변수로 대치한다.
+ getter, setter, AllargsConstructor 세팅


AccountDao 만들기


AccountInsert, AccountUpdate, AccountDelete 클래스를 만들어보고 실습한 후,
AccountDao의 각 메서드로 삽입한다.

AccountInsert

AccountUpdate

AccountDelete


SQL 쿼리 깔끔하게 만들기



SQL 쿼리 깔끔하게 만들기 2 - String Builder 사용


  1. String Builder로 쿼리문 만들기

  2. 빨간 네모박스안에 내용 sql.toString() 으로 바꿔주기 (원래는 sql)


Selectone 실습


package practice;

import db.DBConnection;
import model.Account;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class AccountSelectOne {

    public static void main(String[] args) {
        Account account = null;
        Connection conn = DBConnection.getInstance();

        try {
            String sql = "select * from account_tb where account_number = ?";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setInt(1, 2222);
            ResultSet rs = statement.executeQuery();

            //커서 내리기 -rs.next()

            // if문 -> pk라서 사용, 데이터가 여러개면 while문 사용
            if(rs.next()){
                account = new Account(
                        rs.getInt("account_number"),
                        rs.getString("account_password"),
                        rs.getInt("account_balance"),
                        rs.getTimestamp("account_created_at")
                );
            }

            System.out.println("계좌번호 : " + account.getAccountNumber());
            System.out.println("계좌비번 : " + account.getAccountPassword());
            System.out.println("계좌잔액 : " + account.getAccountBalance());
            System.out.println("계좌생성일 : " + account.getAccountCreatedAt());


        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

resultset 은 아래 사진을 나타냄

profile
백엔드 교육과정 기록 velog입니다.

0개의 댓글