코딩 노트
데이터베이스 조회 최종 형태1(member) 본문
예제는 Member 테이블 사용(회원가입 프로그램)
0. 자바와 데이터베이스를 연결해 주는 도구 클래스 형태로 편하게 구현
public class JdbcUtils {
//연결 정보를 상수로 저장
public static final String driver = "oracle.jdbc.OracleDriver";
public static final String url = "jdbc:oracle:thin:@localhost:1521:xe";
public static final String username = "C##KH";
public static final String password = "KH";
//실행도구 생성 메소드
public static JdbcTemplate getJdbcTemplate() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}
1. 조회 결과 중 한 줄을 담을 객체 (DTO) 생성
멤버필드, setter/getter, 기본 생성자, toString();
package jdbc.dto;
import java.sql.Date;
public class MemberDto {
private String memberId;
private String memberPw;
private String memberNinkname;
private String memberBirth;
private String memberEmail;
private String memberContact;
private String memberLevel;
private int memberPoint;
private Date memberJoin;
public MemberDto() {
super();
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
~~~
~~~
~~~
public Date getMemberJoin() {
return memberJoin;
}
public void setMemberJoin(Date memberJoin) {
this.memberJoin = memberJoin;
}
@Override
public String toString() {
return "MemberDto [memberId=" + memberId + ", memberPw=" + memberPw + ", memberNinkname=" + memberNinkname
+ ", memberBirth=" + memberBirth + ", memberEmail=" + memberEmail + ", memberContact=" + memberContact
+ ", memberLevel=" + memberLevel + ", memberPoint=" + memberPoint + ", memberJoin=" + memberJoin + "]";
}
}
2. 조회 결과를 DTO에 옮겨 담는 방법을 가진 객체(Mapper) 생성
public class MemberMapper implements RowMapper<MemberDto> {
@Override
public MemberDto mapRow(ResultSet rs, int idx) throws SQLException {
MemberDto dto = new MemberDto();
dto.setMemberId(rs.getString("member_id"));
dto.setMemberPw(rs.getString("member_pw"));
dto.setMemberNinkname(rs.getString("member_nickname"));
dto.setMemberBirth(rs.getString("member_birth"));
dto.setMemberEmail(rs.getString("member_email"));
dto.setMemberContact(rs.getString("member_contact"));
dto.setMemberLevel(rs.getString("member_level"));
dto.setMemberPoint(rs.getInt("member_point"));
dto.setMemberJoin(rs.getDate("member_join"));
return dto;
}
}
3. 데이터에 접근하도록 DB접근 관련 로직을 모아둔 객체(DAO) 생성
public class MemberDao {
//등록
public void insert(MemberDto dto) {
// String sql = "insert into member("
// + "member_id, member_pw, member_nickname,"
// + "member_birth, member_email, member_contact,"
// + "member_level, member_point, member_join"
// + ") values(?, ?, ?, ?, ?, ?, '일반', 0, sysdate)";
String sql = "insert into member("
+ "member_id, member_pw, member_nickname,"
+ "member_birth, member_email, member_contact"
+ ") values(?, ?, ?, ?, ?, ?)";
Object[] data = {
dto.getMemberId(), dto.getMemberPw(),
dto.getMemberNinkname(), dto.getMemberBirth(),
dto.getMemberEmail(), dto.getMemberContact()
};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
jdbcTemplate.update(sql, data);
}
}
4. 메인 클래스에 구현
public static void main(String[] args) {
//회원 가입
MemberDto dto = new MemberDto();
dto.setMemberId("testuser5");
dto.setMemberPw("Testuser5!");
dto.setMemberNinkname("테스트유저5");
dto.setMemberBirth("2022-05-05");
dto.setMemberEmail(null);
dto.setMemberContact("01055555555");
MemberDao dao = new MemberDao();
dao.insert(dto);
System.out.println("회원 가입 완료");
}
'Database' 카테고리의 다른 글
데이터베이스 - 수정 (0) | 2023.07.25 |
---|---|
데이터베이스 조회 최종 형태2(product) (0) | 2023.07.24 |
데이터베이스6 - 모듈화 (0) | 2023.07.24 |
데이터베이스5 - JDBC (0) | 2023.07.21 |
데이터베이스4 - Top N Query (0) | 2023.07.20 |