Java/SPRING
[#SPRING] 09. DAO 생성 및 테스트
dopal2
2021. 7. 9. 15:30
반응형
1. 테스트에 필요한 파일 및 디렉터리 생성
사용자 관리기능을 테스트
- 사용자 관리 기능에 사용되는 디렉토리 생성
/user | 사용자 관리에 사용되는 모든 파일을 담는 디렉터리 |
/user/controller | controller를 담는 디렉터리 |
/user/vo | vo 객체를 담는 디렉터리 |
/user/service | service를 담는 디렉터리 |
/user/dao | dao를 담는 디렉터리 |
- 회원 데이터 정의
UUID 고유값 ID 아이디 PW 비밀번호 NAME 이름 REGISTERNUMBER 인증값 EMAIL 이메일 ETC1 기타1 ETC2 기타2 ETC3 기타3 ETC4 기타4 ETC5 기타5 ETC6 기타6 REGISTER_DT 등록일 LEVEL 권한 STATE 상태(0:정상, 999:삭제) |
- 테이블 생성
상단의 데이터 정의를 기반으로 회원정보를 담을 테이블을 생성
- 객체생성
/user/vo 하단에 회원 데이터 정의에 맞게 파일 생성
public class UserVO { String uuid; String id; String pw; String name; String registernumber; String email; String etc1; String etc2; String etc3; String etc4; String etc5; String etc6; String register_dt; int level; int state; public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPw() { return pw; } public void setPw(String pw) { this.pw = pw; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getRegisternumber() { return registernumber; } public void setRegisternumber(String registernumber) { this.registernumber = registernumber; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getEtc1() { return etc1; } public void setEtc1(String etc1) { this.etc1 = etc1; } public String getEtc2() { return etc2; } public void setEtc2(String etc2) { this.etc2 = etc2; } public String getEtc3() { return etc3; } public void setEtc3(String etc3) { this.etc3 = etc3; } public String getEtc4() { return etc4; } public void setEtc4(String etc4) { this.etc4 = etc4; } public String getEtc5() { return etc5; } public void setEtc5(String etc5) { this.etc5 = etc5; } public String getEtc6() { return etc6; } public void setEtc6(String etc6) { this.etc6 = etc6; } public String getRegister_dt() { return register_dt; } public void setRegister_dt(String register_dt) { this.register_dt = register_dt; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public int getState() { return state; } public void setState(int state) { this.state = state; } } |
- DAO 파일 생성
기본적으로 사용되는 기능인 목록, 조회, 삽입, 수정, 삭제 기능 생성
UserDAO.java public interface UserDAO { //UUID로 조회 public UserVO getUserInfo(String uuid) throws Exception; // 전체 조회 public List<UserVO> getUserList() throws Exception; // 등록 public int insertUser(UserVO userVO) throws Exception; // 수정 public int updateUser(UserVO userVO) throws Exception; // 삭제 public int deleteUser(String uuid) throws Exception; } |
UserDAOImpl.java @Repository public class UserDAOImpl implements UserDAO { @Inject private SqlSession sqlSession; //UUID로 조회 @Override public UserVO getUserInfo(String uuid) throws Exception { // TODO Auto-generated method stub return sqlSession.selectOne("mappers.user-mapper.getUserInfo", uuid); // 수정후 기존null로 되있음 } // 전체 조회 @Override public List<UserVO> getUserList() throws Exception { // TODO Auto-generated method stub return sqlSession.selectList("mappers.user-mapper.getUserList"); // 수정후 기존null로 되있음 } // 등록 @Override public int insertUser(UserVO userVO) throws Exception { // TODO Auto-generated method stub return sqlSession.insert("mappers.user-mapper.insertUser", userVO); // 수정후 기존null로 되있음 } // 수정 @Override public int updateUser(UserVO userVO) throws Exception { // TODO Auto-generated method stub return sqlSession.update("mappers.user-mapper.updateUser", userVO); // 수정후 기존null로 되있음 } // 삭제 @Override public int deleteUser(String uuid) throws Exception { // TODO Auto-generated method stub return sqlSession.delete("mappers.user-mapper.deleteUser", uuid); // 수정후 기존null로 되있음 } } |
- DAO에 사용되는 mapper생성
목록, 조회, 삽입, 수정, 삭제 기능에 대한 mapper 생성
user-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="mappers.user-mapper"> <select id="getUserInfo" resultType="com.SpringProject.spring.user.vo.UserVO"> SELECT UUID, ID, PW, NAME, REGISTERNUMBER, EMAIL, ETC1, ETC2, ETC3, ETC4, ETC5, ETC6, REGISTER_DT, LEVEL, STATE FROM USER_TABLE WHERE UUID = #{uuid} </select> <select id="getUserList" resultType="com.SpringProject.spring.user.vo.UserVO"> SELECT UUID, ID, PW, NAME, REGISTERNUMBER, EMAIL, ETC1, ETC2, ETC3, ETC4, ETC5, ETC6, REGISTER_DT, LEVEL, STATE FROM USER_TABLE </select> <insert id="insertUser" parameterType="com.SpringProject.spring.user.vo.UserVO"> INSERT INTO USER_TABLE (UUID, ID, PW, NAME, REGISTERNUMBER, EMAIL, ETC1, ETC2, ETC3, ETC4, ETC5, ETC6, REGISTER_DT, LEVEL, STATE) VALUES ( #{uuid}, #{id}, #{pw}, #{name}, #{registernumber}, #{email}, #{etc1}, #{etc2}, #{etc3}, #{etc4}, #{etc5}, #{etc6}, now(), #{level}, #{state} ) </insert> <update id="updateUser" parameterType="com.SpringProject.spring.user.vo.UserVO"> UPDATE USER_TABLE SET PW = #{pw}, NAME = #{name}, REGISTERNUMBER = #{registernumber}, EMAIL = #{email}, ETC1 = #{etc1}, ETC2 = #{etc2}, ETC3 = #{etc3}, ETC4 = #{etc4}, ETC5 = #{etc5}, ETC6 = #{etc6}, LELVE = #{level}, STATE = #{state} WHERE UUID = #{uuid} </update> <delete id="deleteUser" parameterType="int"> DELETE FROM USER_TABLE WHERE UUID = #{uuid} </delete> </mapper> |
- mapper에 맞게 DAO 파일 수정
mapper에 매핑된 내용에 맞게 DAO 파일 수정
- /src/test 하단에 테스트파일 생성
UserDAOTest 생성 (/src/test/java/com/SpringProject/spring/UserDAOTest.java)
UserDAOTest.java @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:spring/dataSource-context.xml"}) public class UserDAOTest { private static final Logger logger = LoggerFactory.getLogger(UserDAOTest.class); @Inject private UserDAO userDAO; @Test public void insertVO() throws Exception{ UserVO userVO = new UserVO(); userVO.setUuid("uuid"); userVO.setId("id"); userVO.setPw("pw"); userVO.setName("name"); userVO.setRegisternumber("registernumber"); userVO.setEmail("email"); userVO.setEtc1("etc1"); userVO.setEtc2("etc2"); userVO.setEtc3("etc3"); userVO.setEtc4("etc4"); userVO.setEtc5("etc5"); userVO.setEtc6("etc6"); userVO.setLevel(1); userVO.setState(0); int result = userDAO.insertUser(userVO); logger.info(String.valueOf(result)); } } |
기능 동작 확인을 위해 insert 기능만 추가
2. 테스트 실행
UserDAOTest 파일을 jUnit으로 실행
: 실행 실패
- dataSource.xml 수정
: component-scan으로 패키지 추가 (패키지를 추가하여 어노테이션을 스캔하여 사용???)
- 실행 성공
3. 확인
반응형