JDBC - mySQL에 연결하기
in Web Dev on Java Spring
mySQL에서 프로젝트와 연결할 테이블 생성하기
- USER , DB, TABLE 만들기
- 다음과 같은 table을 만든다.
Maven Project 만들기
maven project 생성 하고, pom.xml에 JDBC dependency 추가한다.
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency>
아래와 같이 세개의 패키지를 만들 것이다.
- jdbcexam.dao 패키지 : mySQL에 연결하고, mySQL 쿼리 작업을 하는 파일을 담는다.
- jdbcexam.dto 패키지 : mySQL에서 생성한 테이블의 레코드 정보를 담을 수 있는 파일을 담는다.
- jdbcexam 패키지 : dto와 dao를 임포트 해, 필요한 작업을 수행한다.
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!@#";
코드를 예시로 보자면 다음과 같다.
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의 구조는 다음과 같다.
- role_id (int -> int)
- description (varchar -> String)
- Role.java 파일. 타입을 잘 변환해 주고, getter,setter, toString 를 만들어준다.
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);
}
}