회원가입 버튼 클릭시 실행되는 서블릿
@MemberEnrollFormController.java
회원가입 폼화면으로 forward만 시켜줌
package com.kh.mybatis.member.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MemberEnrollFormController
*/
@WebServlet("/enrollForm.me")
public class MemberEnrollFormController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MemberEnrollFormController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("WEB-INF/views/member/memberEnrollForm.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
VO 클래스 생성
@Member.java
package com.kh.mybatis.member.model.vo;
import java.sql.Date;
public class Member {
private int userNo; // USER_NO NUMBER
private String userId; // USER_ID VARCHAR2(30 BYTE)
private String userPwd; // USER_PWD VARCHAR2(100 BYTE)
private String userName; // USER_NAME VARCHAR2(15 BYTE)
private String email; // EMAIL VARCHAR2(100 BYTE)
private String birthday; // BIRTHDAY VARCHAR2(6 BYTE)
private String gender; // GENDER VARCHAR2(1 BYTE)
private String phone; // PHONE VARCHAR2(13 BYTE)
private String address; // ADDRESS VARCHAR2(100 BYTE)
private Date enrollDate; // ENROLL_DATE DATE
private Date modifyDate; // MODIFY_DATE DATE
private String status; // STATUS VARCHAR2(1 BYTE)
public Member() {
super();
}
public Member(int userNo, String userId, String userPwd, String userName, String email, String birthday,
String gender, String phone, String address, Date enrollDate, Date modifyDate, String status) {
super();
this.userNo = userNo;
this.userId = userId;
this.userPwd = userPwd;
this.userName = userName;
this.email = email;
this.birthday = birthday;
this.gender = gender;
this.phone = phone;
this.address = address;
this.enrollDate = enrollDate;
this.modifyDate = modifyDate;
this.status = status;
}
public Member(String userId, String userPwd, String userName, String email, String birthday,
String gender, String phone, String address) {
super();
this.userId = userId;
this.userPwd = userPwd;
this.userName = userName;
this.email = email;
this.birthday = birthday;
this.gender = gender;
this.phone = phone;
this.address = address;
}
public int getUserNo() {
return userNo;
}
public void setUserNo(int userNo) {
this.userNo = userNo;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getEnrollDate() {
return enrollDate;
}
public void setEnrollDate(Date enrollDate) {
this.enrollDate = enrollDate;
}
public Date getModifyDate() {
return modifyDate;
}
public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Override
public String toString() {
return "Member [userNo=" + userNo + ", userId=" + userId + ", userPwd=" + userPwd + ", userName=" + userName
+ ", email=" + email + ", birthday=" + birthday + ", gender=" + gender + ", phone=" + phone
+ ", address=" + address + ", enrollDate=" + enrollDate + ", modifyDate=" + modifyDate + ", status="
+ status + "]";
}
}
Service 인터페이스 생성
@MemberService.java
MemberService 인터페이스에서 설계하고 implements 받은 MemberServiceImpl 클래스에서 구현
인터페이스는 상수필드 또는 추상메소드만 오기때문에 public static final, public abstract 생략 가능
package com.kh.mybatis.member.model.service;
import com.kh.mybatis.member.model.vo.Member;
public interface MemberService {
int insertMember(Member m);
}
ServiceImpl 클래스 생성
@MemberServiceImpl.java
이전까지는 매번 xml을 불러오는 기본생성자 new MemberDao()를 호출했지만(예. new MemberDao().updateMember)
이 경우 매번 호출이 되므로 비효율적임
전역변수로 만들어놓은 후 재사용!
package com.kh.mybatis.member.model.service;
import org.apache.ibatis.session.SqlSession;
import com.kh.mybatis.common.template.Template;
import com.kh.mybatis.member.model.dao.MemberDao;
import com.kh.mybatis.member.model.vo.Member;
public class MemberServiceImpl implements MemberService{
private MemberDao memberDao = new MemberDao();
@Override
public int insertMember(Member m) {
SqlSession sqlSession = Template.getSqlSession();
int result = memberDao.insertMember(sqlSession, m);
if(result>0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
sqlSession.close();
return result;
}
}
Dao클래스 생성 및 mapper 생성
@MemberDao.java
sqlSession에서 제공하는 메소드를 통해 sql문을 찾아 실행후 결과를 받음
sqlSession.sql문종류메소드("메퍼파일namespace.sql문id", sql문을완성시킬객체);
-> 해당 sql문이 완성상태(위치홀더가없을때)이면 sql문을완성시킬객체는 생략
package com.kh.mybatis.member.model.dao;
import org.apache.ibatis.session.SqlSession;
import com.kh.mybatis.member.model.vo.Member;
public class MemberDao {
public int insertMember(SqlSession sqlSession, Member m) {
return sqlSession.insert("memberMapper.insertMember",m);
}
}
@member-mapper.xml
<?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="memberMapper">
<insert id="insertMember" parameterType="member">
INSERT
INTO MEMBER
(
USER_NO,
USER_ID,
USER_PWD,
USER_NAME,
EMAIL,
BIRTHDAY,
GENDER,
PHONE,
ADDRESS
)
VALUES(
SEQ_UNO.NEXTVAL,
#{userId},
#{userPwd},
#{userName},
#{email},
#{birthday},
#{gender},
#{phone},
#{address}
)
</insert>
</mapper>
'MyBatis' 카테고리의 다른 글
[MyBatis] 개요 및 다운로드 (0) | 2023.03.27 |
---|---|
[MyBatis] mapper.xml (0) | 2022.06.15 |
[MyBatis] SqlSession 객체 정보 Template 클래스 생성 (0) | 2022.06.14 |
[MyBatis] XML설정파일 mybatis-config.xml (0) | 2022.06.14 |