스프링을 공부하면서 가장 기본적인 회원가입 기능을 구현 해보았다.
jsp/servlet으로는 간단하게 구현 했는데 스프링을 아직 완전히 이해를 못해서 구조가 약간 어려웠다.
create table T_Member(
idx number not null,
name varchar2(100) not null,
Nick varchar2(2000) not null,
email varchar2(20) not null,
address varchar2(20) not null,
indate date default sysdate,
constraint pk_test_idx primary key(idx)
);
Oracle 에서 먼저 필요한 컬럼들을 넣고 member 테이블을 생성했다.
관리자 기능을 넣기위해서 나중에 ad_ck 컬럼을 추가해서 기본값을 0으로 삽입했다.
import lombok.Data;
@Data
public class MemberVO {
private int idx;
private String name;
private String pw;
private String nick;
private String email;
private String Address;
private String indate;
}
lombok
Data 어노테이션을 사용해 Getter, Setter 등을 생성 시켜준다.
Data 어노테이션을 사용하지 않으면 직접 getter 또는 setter를 생성시켜준다.
import org.apache.ibatis.annotations.Insert;
public interface MemberMapper {
@Insert("insert into t_member(idx, name, nick, email, address, indate, pw) values(TMember_seq.nextval, #{name}, #{nick}, #{email}, #{address}, sysdate, #{pw})")
public void MemberJoin(MemberVO vo);
}
Mapper.xml을 생성하지 않고 간단하게 @Insert 어노테이션으로
회원가입시 작성한 정보들을 테이블에 삽입해준다.
import kr.smhrd.domain.MemberVO;
public interface MemberService {
//회원가입
public void Join(MemberVO vo) throws Exception;
}
@Service
public class MemberServiceImple implements MemberService {
@Autowired
private MemberMapper mapper;
public void Join(MemberVO vo) {
mapper.MemberJoin(vo);
}
}
MemberService 인터페이스를 추가하고 인터페이스를 MemberServiceImple에 상속받아서 mapper에 접근한다. 구현체에서
@Service 어노테이션은 빼 먹지 말고 꼭 작성 해야한다.
import kr.smhrd.domain.MemberVO;
import kr.smhrd.service.MemberService;
@Controller
public class MemberController {
@Autowired
private MemberService MemberService;
@PostMapping("/Join.do")
public String Join(MemberVO vo) {
try {
MemberService.Join(vo);
} catch (Exception e) {
e.printStackTrace();
}
return "redirect:/";
}
<form action="/TEST/Join.do" method="post">
<label for="email">이메일</label>
<input type="email" id="email" name="email"placeholder="you@example.com">
간단하게 이메일만 적어봤다.
name값을 입력해주고 action을 controller의 회원가입과 일치시켜준다.