순서
1. 데이터베이스 테이블 생성 및 VO 생성
1) Oracle
2) VO 생성
2. MemberMapper.xml 추가
1) insert 쿼리문 테스트 및 관리자 아이디 만들기
2) mapper.xml 작성
3. MemberMapper.java 인터페이스 추가
1. 데이터베이스 테이블 생성 및 VO 생성
회원 가입 기능 구현을 위해 기본적으로 필요한 회원 테이블(member)과 회원 테이블의 VO(Value Object)를 생성합니다.
회원 테이블 명은 member이고, VO 명은 MemberVO입니다.
1) Oracle 테이블 생성
--------------------------------------------------
------------- MEMBER 관련 ------------------------
--------------------------------------------------
CREATE TABLE MEMBER(
ID VARCHAR2(50) PRIMARY KEY,
PWD VARCHAR2(100),
NAME VARCHAR2(30),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(100),
GENDER VARCHAR2(1) CHECK (GENDER IN('M', 'F', 'N')),
ADDRESS VARCHAR2(100),
ADDRESS2 VARCHAR2(100),
JOINDATE DATE DEFAULT SYSDATE,
MEMBER_STATUS VARCHAR2(1) DEFAULT 'Y' CHECK(MEMBER_STATUS IN('Y', 'N')),
ADMIN_CK NUMBER DEFAULT 0);
아이디(id), 비밀번호(pwd), 이름(name), 전화번호(phone), 이메일(email), 성별(gender), 주소(address), 상세 주소(address2), 가입 날짜(joindate), 활성화 상태(memebr_status), 관리자 여부(admin_ck)로 구성했습니다.
성별은 M = '남성', F = '여성', N = '선택 안 함'으로 설정했습니다.
활성화 상태는 이후 회원 탈퇴를 위해 삽입했습니다. 'Y'는 회원 활성화 상태이며, 'N'은 회원 비활성화 상태입니다.(기본적으로 설정되는 값은 Y로 설정했습니다.)
관리자 여부는 int형으로 했으며, 0은 일반 사용자, 1은 관리자로 하여 로그인한 회원이 일반 회원인지 관리자인지 구분하기 위해 삽입했습니다. (기본적으로 설정되는 값은 0으로 설정했습니다.)
몇몇 데이터 정보는 필수 입력이지만, 편의를 위해 primary key를 제외한 모든 정보는 null이 가능하게 했습니다.
2) VO 생성
member 테이블에 데이터를 저장하거나 반환된 데이터를 담을 객체(VO)를 만들었습니다. com.swan.model에 MemberVO.java 클래스를 생성했습니다.
MemberVO.java
package com.swan.model;
import java.sql.Date;
public class MemberVO {
private String id; // 회원 아이디
private String pwd; // 회원 비밀번호
private String name; // 회원 이름
private String phone; // 회원 전화번호
private String email; // 회원 이메일
private String gender; // 회원 성별
private String address; // 회원 주소
private String address2; // 회원 상세주소
private Date joindate; // 등록일자
private String member_status; // 회원 상태
private int admin_ck; // 관리자 구분(0: 일반 사용자, 1: 관리자)
public MemberVO() {}
public MemberVO(String id, String pwd, String name, String phone, String email, String gender, String address,
String address2, Date joindate, String member_status, int admin_ck) {
super();
this.id = id;
this.pwd = pwd;
this.name = name;
this.phone = phone;
this.email = email;
this.gender = gender;
this.address = address;
this.address2 = address2;
this.joindate = joindate;
this.member_status = member_status;
this.admin_ck = admin_ck;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress2() {
return address2;
}
public void setAddress2(String address2) {
this.address2 = address2;
}
public Date getJoindate() {
return joindate;
}
public void setJoindate(Date joindate) {
this.joindate = joindate;
}
public String getMember_status() {
return member_status;
}
public void setMember_status(String member_status) {
this.member_status = member_status;
}
public int getAdmin_ck() {
return admin_ck;
}
public void setAdmin_ck(int admin_ck) {
this.admin_ck = admin_ck;
}
@Override
public String toString() {
return "MemberVO [id=" + id + ", pwd=" + pwd + ", name=" + name + ", phone=" + phone + ", email=" + email
+ ", gender=" + gender + ", address=" + address + ", address2=" + address2 + ", joindate=" + joindate
+ ", member_status=" + member_status + ", admin_ck=" + admin_ck + "]";
}
}
Alt + Shift + S를 눌러 기본 생성자와 getter/setter/toString 메서드를 작성했습니다.
2. MemberMapper.xml 작성
src/main/resources에 있는 mapper 폴더에 MemberMapper.xml 파일을 만들었습니다.
- mapper 태그에 namespace 속성은 연동하고자 하는 Mapper 인터페이스명을 경로와 함께 명시해줍니다. 저는 com.swan.mapper.MemberMapper로 작성했습니다.
- mapper 태그 내에 insert 태그를 새로 추가해줍니다. insert의 id 속성은 insertMember로 했습니다. insertMember는 MemeberMApper.java에서 회원가입 쿼리문을 호출할 때 사용될 메서드 이름입니다.
- insert 태그 내에 회원 가입과 관련된 명령문을 넣고 삽입될 데이터는 #{VO에 저장된 데이터 이름}으로 작성했습니다.
- 활성화 상태와 관리자 여부는 앞서 DB에서 기본적으로 설정된 값을 삽입하기 위해 default로 넣어줬습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.swan.mapper.MemberMapper">
<!-- 회원가입 -->
<insert id="insertMember">
insert into member
values(#{id}, #{pwd}, #{name}, #{phone}, #{email}, #{gender}, #{address}, #{address2}, sysdate, default, default)
</insert>
</mapper>
3. MemberMapper.java 인터페이스 추가
com.swan.mapper 경로에 MemberMapper.java 인터페이스를 추가해줍니다.
이후 회원 등록 insert 쿼리문을 실행시켜 줄 메서드를 작성합니다.
package com.swan.mapper;
import com.swan.model.MemberVO;
public interface MemberMapper {
// 회원가입
public void insertMember(MemberVO member);
}
'😎 STS3 Spring 쇼핑몰' 카테고리의 다른 글
STS3 쇼핑몰 프로젝트[3] 아이디 중복 검사 기능 (0) | 2022.07.31 |
---|---|
STS3 쇼핑몰 프로젝트[2.2] 회원 가입 기능 구현(service/controller/jsp) (0) | 2022.07.31 |
STS3 쇼핑몰 프로젝트[2] 로그인 페이지, 회원 가입 페이지 (0) | 2022.07.30 |
STS3 쇼핑몰 프로젝트[1] 메인 페이지 (0) | 2022.07.30 |
STS3 쇼핑몰 프로젝트[0] 프로젝트 생성 및 환경 설정 (0) | 2022.07.30 |