JDBC - mySQL에 연결하기

mySQL에서 프로젝트와 연결할 테이블 생성하기

image

Maven Project 만들기

  • maven project 생성 하고, pom.xml에 JDBC dependency 추가한다.

    image

    <dependency>
      <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.46</version>
     </dependency>
    
  • 아래와 같이 세개의 패키지를 만들 것이다.

    1. jdbcexam.dao 패키지 : mySQL에 연결하고, mySQL 쿼리 작업을 하는 파일을 담는다.
    2. jdbcexam.dto 패키지 : mySQL에서 생성한 테이블의 레코드 정보를 담을 수 있는 파일을 담는다.
    3. jdbcexam 패키지 : dto와 dao를 임포트 해, 필요한 작업을 수행한다.

image

1. RoleDao.java - mySQL 연결, 쿼리 요청

private static String dburl = "jdbc:mysql://localhost:3306/cutePin?allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&useSSL=false";
private static String dbUser = "callie";
private static String dbpasswd = "connect123!@#";

image

출처 : 부스트코스 - web풀스택

  • 코드를 예시로 보자면 다음과 같다.

    image

    • DriverManager을 로드한다.

      class.forName("com.mysql.jdbc.Driver")
      
    • DriverManager에서 Connection 객체를 얻어온다. 이때, db의 URL,유저 Id, Pwd 필요하다.

      Connection conn = DriverManager.getConnection(dburl,dbUser,dbpasswd);
      
    • Connection 객체를 통해서 preparedStatement 객체를 얻어온다. 이때, prepareStatement 안에 sql 쿼리문을 넣어준다.

      • 쿼리문 안, ‘?’ 값을 setInt(물음표 순서,값) 이나 setString(물음표 순서, 값)으로 ?를 바꿔줄 수 있다.
      String sql = "SELECT role_id , description FROM role WHERE role_id=?"
      PreparedStatement ps = conn.prepareStatement(sql);
      
    • preparedStatement 객체를 execute 해서 query 문을 실행해 ResultSet 객체를 받아낸다.

      ResultSet rs = ps.executeQuery();
      

2. jdbcexam.dto - mySQL 레코드 정보 저장

  • mySQL의 cutePin DB에 저장된 role table의 구조는 다음과 같다.

image

  1. role_id (int -> int)
  2. description (varchar -> String)
  • Role.java 파일. 타입을 잘 변환해 주고, getter,setter, toString 를 만들어준다.

image

3. jdbcexam 패키지 - 작업 수행

  • CRUD 논리를 구현해서 RoleDao와 Role객체를 알맞게 사용한다. 자세한 예시는 여기
package kr.or.connect.jdbcexam;
import kr.or.connect.jdbcexam.dao.RoleDao;
import kr.or.connect.jdbcexam.dto.Role;

public class JDBCExam1 {
	public static void main(String[] args) {
		RoleDao dao = new RoleDao();
		Role role = dao.getRole(100);
		System.out.println(role);
	}
}

© 2018. All rights reserved.

Powered by Hydejack v8.5.2