☕Java/Spring
[20210719] Spring + MyBatis를 이용한 로그인 및 게시판 3 - DAO
캔
2021. 7. 19. 18:24
DAO 또한 두 개를 만든다. Boardc 테이블에 접근하기 위한 BoardCDao, Customer 테이블에 접근하기 위한 CustomerDao를 만들었다.
BoardCDao는 게시판의 글 목록을 불러오는 bbs_all(), 하나의 글을 불러오는 get_bbs(), 게시글을 작성하기 위한 write_bbs() 메서드로 구성되어 있다.
CustomerDao는 로그인을 위한 Login(), 아이디 중복을 체크하기 위한 Id_Check(), 회원가입을 위한 Register() 메서드로 구성되어 있다.
이전 프로젝트와 달라진 점은 이전 프로젝트에서는 spring-controller.xml(Bean 설정 파일)에서 dao를 위한 bean을 생성하지 않으며 spring-controller.xml에서 SqlSession에 생성자 주입이 이뤄지지 않는다는 것이다. 대신 DAO에서 DAO으로 사용하겠다는 것을 알리는 @Repository 애너테이션, 생성자 주입을 위한 @Inject 애너테이션을 사용한다.
//BoardCDao.java
package customer.dao;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import customer.dto.BoardDTO;
@Repository
public class BoardCDao {
@Inject
private SqlSession ss;
private static final String NameSpace = "bbsMapper.";
public List<BoardDTO> bbs_all() {
try {
return ss.selectList(NameSpace+"bbs_all");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public BoardDTO get_bbs(BoardDTO b) {
try {
return ss.selectOne(NameSpace+"get_bbs", b);
} catch(Exception e) {
e.printStackTrace();
return null;
}
}
public int write_bbs(BoardDTO b) {
try {
ss.insert(NameSpace+"write_bbs", b);
return 0;
} catch (Exception e) {
e.printStackTrace();
return 1;
}
}
}
//CustomerDao.java
package customer.dao;
import javax.inject.Inject;
import javax.servlet.http.HttpSession;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import customer.dto.CustomerDTO;
@Repository
public class CustomerDao {
@Inject
private SqlSession ss;
private static final String NameSpace = "customerMapper.";
public int Login(CustomerDTO u, HttpSession Hsession) {
int Id_Search_Result = -1;
try {
Id_Search_Result = ss.selectOne(NameSpace+"Login", u);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
if(Id_Search_Result!=1) return Id_Search_Result;
try {
CustomerDTO u_info = ss.selectOne(NameSpace+"Login_Info", u);
Hsession.setAttribute("u", u_info);
return 1;
} catch(Exception e) {
e.printStackTrace();
return -2;
}
}
public int Id_Check(CustomerDTO u) {
try {
return ss.selectOne(NameSpace+"Id_Check", u);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
public int Register(CustomerDTO u) {
System.out.println("여기는 dao 안");
int Id_Check_Result = Id_Check(u);
if(Id_Check_Result!=0) return Id_Check_Result;
try {
ss.insert(NameSpace+"Register", u);
return 0;
} catch(Exception e) {
e.printStackTrace();
return -2;
}
}
}