728x90
반응형
입력
RoleDao.java에 addRole() 메소드 추가
// 입력
public int addRole(Role role) {
int insertCount = 0; // 반환값
Connection conn = null;
PreparedStatement ps = null;
// 입력값은 결과값을 가져오지 않기에 resultset은 안 적음
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 물음표가 들어간 쿼리는 완전한 쿼리문이 아니기에
// 꼭 각각에 대한 바인딩이 필요
String sql = "INSERT INTO role (role_id, description) VALUES ( ?, ? )";
try {
conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
ps = conn.prepareStatement(sql);
// 쿼리문에 바인딩하는 메소드
ps.setInt(1, role.getRoleId());
ps.setString(2, role.getDescription());
// 쿼리가 실행됐을 때 받은 정수값 저장
// 그저 입력 횟수일 뿐, DB 속 값이 아님
insertCount = ps.executeUpdate();
} catch (Exception ex) {
ex.printStackTrace();
}
return insertCount;
}
JDBCExam2.java 생성 후
role_id는 501, description은 CTO 데이터 추가
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(501);
System.out.println(role);
}
}
JDBCExam1.java에서
501로 role_id 조회하면 CTO가 출력됨
모두 조회
RoleDao.java에 getRoles() 메소드 추가
!! try-with-resolution 구문 잘 봐두기
// 모두 조회
// 모든 Role 객체를 가져와야 하기에 List 반환형
public List<Role> getRoles() {
List<Role> list = new ArrayList<>();
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String sql = "SELECT description, role_id FROM role order by role_id desc";
// try-with-resources 구문
// try()에서 객체 선언 및 할당. try()에서만 사용 가능
// try을 벗어나면 자동적으로 각 객체들의 close() 호출 -> finally close() 필요X
try (Connection conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
PreparedStatement ps = conn.prepareStatement(sql)) {
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) { // 데이터가 여러 개이므로 while(rs.next())
// role 객체 하나 생성해서 하나 담는 방식을 여러 번 반복
String description = rs.getString(1);
int id = rs.getInt("role_id");
Role role = new Role(id, description);
list.add(role); // list에 반복할때마다 Role인스턴스를 생성하여 list에 추가한다.
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return list;
}
JDBCExam2.java 생성 후 실행
반환받은 리스트에서 원소 하나씩 출력
package kr.or.connect.jdbcexam;
import java.util.List;
import kr.or.connect.jdbcexam.dao.RoleDao;
import kr.or.connect.jdbcexam.dto.Role;
public class JDBCExam3 {
public static void main(String[] args) {
RoleDao dao = new RoleDao();
List<Role> list = dao.getRoles();
for(Role role : list) {
System.out.println(role);
}
}
}
수정
updateRole()
// 수정
public int updateRole(Role role) {
int updateCount = 0;
String sql = "update role set description = ? where role_id = ?";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try (Connection conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, role.getDescription());
ps.setInt(2, role.getRoleId());
updateCount = ps.executeUpdate();
}catch(Exception ex) {
ex.printStackTrace();
}
return updateCount;
}
main()
public static void main(String[] args) {
//수정테스트
int roleId = 501;
String description = "CEE??";
Role role = new Role(roleId, description);
RoleDao dao = new RoleDao();
int updateCount = dao.updateRole(role);
System.out.println(updateCount);
}
삭제
deleteRole()
// 삭제
public int deleteRole(Integer roleId) {
int deleteCount = 0;
String sql = "DELETE FROM role WHERE role_id = ?";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try (Connection conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, roleId);
deleteCount = ps.executeUpdate();
}catch(Exception ex) {
ex.printStackTrace();
}
return deleteCount;
}
main()
public static void main(String[] args) {
// TODO Auto-generated method stub
int roleId = 501;
RoleDao dao = new RoleDao();
int deleteCount = dao.deleteRole(roleId);
System.out.println(deleteCount);
}
728x90
반응형
'Web > Java+Spring' 카테고리의 다른 글
Web API 실습 (0) | 2021.05.14 |
---|---|
REST API 와 Web API, 상태 코드 (0) | 2021.05.14 |
JDBC 준비 (0) | 2021.05.14 |
Maven (0) | 2021.05.13 |
JSTL (JSP Standard Tag Library) (0) | 2021.05.10 |