티스토리 뷰
Gradle로 Spring을 해보자 with Intelli J 14 - 제4편 mysql db와 연동을 확인 해보자
KyeongRok Kim 2015. 4. 13. 11:29Gradle로 Spring을 해보자 with Intelli J 14 - 제4편 mysql db와 연동을 확인 해보자
2015/04/11 - [Web개발/JAVA] - Gradle로 Spring을 해보자 with Intelli J 14 - 제1편 Gradle로 Java Project 생성하기
2015/04/13 - [Web개발/JAVA] - Gradle로 Spring을 해보자 with Intelli J 14 - 제3편 MySQL에 DB생성하기
이번에는 gradle로 import한 mysql jdbc driver가 제대로 작동을 해서 select한 내용이 java console에 잘 찍히는지를 확인 해보자.
일단 아래 순서로 진행을 해볼 생각이다.
1.초간단 DAO Class 생성
2.create db
3.insert
4.select
별거 없지만 소스코드는 아래와 같다.
public class UserDao {
public Connection getConnection(){
return null;
}
public User select(){
}
}
위 화면을 보면 idea에서 'User'에 빨간색으로 색칠을 해줬다.
toby에 나온대로 select를 했을 때 User object type으로 return을 받고 싶은데 'User' object가 없으니까 나오는 경고 표시이다.
그럼 'User' Object를 만들어 보자.
이전 포스트에서 DB에 만들었던 table이 'user'이기 때문에 똑같은 모양으로 'User' Object를 만드는 것이다.
Intelli J는 여러가지 편의 기능을 제공하는데 여기에서는 'Alt + enter'를 누르면 현재 상황에서 적절한 작업을 추천 해준다.
alt + enter 를 누르고 'Create class User'를 선택하자.
이렇게 안하고 그냥 /java/에서 우측 클릭 해서 'java Class를 만들기'를 눌러도 된다.
그러면 위와 같이 package를 정하는 화면이 나오는데 package 는 나중에 정해주기로 하고 그냥 엔터를 눌러준다.
그러면 아래와 같이 User Class가 생성이 된다.
아래와 같이 필드를 추가해 준다.
소스코드는 아래와 같다.
public class User {
private String name;
private String id;
private String password;
}
User object의 getter와 setter를 만들어 주기 위해 alt + insert를 눌러서 getter와 setter를 만들어 주는 기능을 호출한다.
eclipse는 마우스 오른쪽 클릭하고 format인가 누르면 getter와 setter를 만들 수 있는걸로 기억한다.... 기억이 맞는지..
Intelli J에서는 아래와 같은 화면이 나온다.
전체 선택 해주고
OK나 enter를 눌러준다.
그러면 아래와 같이 예쁘게 만들어진다.
00 레알 그러하다.
완성된 소스코드는 아래와 같다.
public class User {
private String name;
private String id;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDao object를 보면 User에 빨간불이 없어졌다.
아직 'return'을 안써줘서 여기저기 빨간줄이 보인다.
'return null'을 넣어주면 빨간줄이 모두 없어진다.
이런 식으로 만들면 된다. 소스코드는 아래와 같다.
public Connection getConnection() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection(
"jdbc:mysql://localhost/krkdb"
,"root"
,"111111");
return c;
db에 주황색으로 표시한 부분이다.
그리고 id랑 password를 본인이 지정한걸로 넣어주면 된다 pw를 지정하지 않았으면 ""으로 넣으면 된다.
그리고 db에서 select를 해서 User object를 return하는 method인 select()를 완성하자
소스코드는 아래와 같다.
public User select(String id) throws SQLException, ClassNotFoundException {
Connection c = getConnection();
PreparedStatement ps = c.prepareStatement("select * from user where id = ?");
ps.setString(1, id);
ResultSet rs = ps.executeQuery();
rs.next();
User user = new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
rs.close();
ps.close();
c.close();
return user;
}
UserDao dao = new UserDao();
User user = dao.select("oceanfog");
System.out.println(user.getName());
System.out.println(user.getId());
System.out.println(user.getPassword());
}
위 db에 id field에 적은 값이다.
그리고 실행 해보자.
intelli j에서 단축키는 ctrl + shift + f10이다.
우측 상단에 '실행'버튼을 눌러도 되고
상단 메뉴 Run - Run 을 해도 된다.
편한걸로 실행하면 된다.
흠.... 이런... 에러가 났다. 무슨 에러인지 확인 해보자.
Exception in thread "main" java.sql.SQLException: Illegal operation on empty result set.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:781)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5239)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5162)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5201)
at UserDao.select(UserDao.java:30)
at UserDao.main(UserDao.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Process finished with exit code 1
이런 에러. Illegal operation on empty result set. 값이 없다는 에러인 것 같다. 'oceanfog'로 검색 했는데 값이 없다는 에러인 것 같다. db를 확인 해보자.
흠 내가 id를 입력할 때 오타를 냈다. 고치고 다시 실행 해보자.
고치고 실행했다.
긋긋!! 성공!
메세지는 아래와 같다.
kyeongrok
oceanfog
1123
Process finished with exit code 0
'Spring > Spring Boot(스프링 부트)' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 이직
- docker container whale
- docker container tissue box
- Sh
- 도커컨테이너
- 2017 티스토리 결산
- Linux
- 개발자
- 도커티슈박스
- 싱가폴
- 도커각티슈박스
- shellscript
- docker container tissue
- docker container case
- docker container
- vim
- 도커각티슈케이스
- 도커티슈케이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |