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. 확인

반응형