본문 바로가기

bitcamp/면접족보

면접족보 21/02/02_Junit test

1. emp에서 더미데이터 2000개 추가하여 페이징 테스트 하시오.

· ex_seq 시퀀스 생성, 15번부터 시작하여 1개씩 증가 (현재 14번까지의 emp정보가 있어서 15번 시작으로 설정)

 

 

· 총 2000개의 글을 생성하기 위해 1985로 설정하여 무한루프를 통해 row 생성

 

 

· 반드시 commit 실행시켜야 적용되므로 주의할 것!

 

 

 

<구현 화면>

 

 

2. Junit을 통해서 emp 더미데이터에서 랜덤으로 deptno 업데이트 하시오.


<EmpMapper.java>

1
2
3
4
public interface EmpMapper {
    public void update();    
.
.
cs

 

<EmpMapper.xml>

1
2
3
4
5
<update id="update" >
    <![CDATA[
        update emp set deptno = (ROUND(DBMS_RANDOM.VALUE(14),0)*10)
    ]]>
</update>    
cs

 

<EmpMapperTest.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@RunWith(SpringRunner.class//ioc 컨테이너를 생성
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")  
//dataSource에 대한 정보는 root-context.xml에 존재하기 때문에 표기 필수
@Log4j
public class EmpMapperTest {
    @Setter(onMethod_ = @Autowired)
    private EmpMapper mapper;
    @Test
    public void testupdate() {  //mapper.xml id와 동일한 명으로 사용하기!
        mapper.update();        //update 후에 값 가져오기, 대신 return 타입은 void!
        List<EmpVO> list = mapper.getlist();
        log.info(mapper);
        
        for(EmpVO empVO : list) {
            log.info(empVO.getDeptno());
        }
    }
}
cs

 

 

<구현 화면>

 

 

3. emp01 테이블을 emp에서 복사하여 emp01로 페이징 테스트 하시오.

· 단, pk/fk 툴 혹은 alter 문으로 key 설정할 것!

<fk툴 설정법: 편집 - 제약조건 - + 버튼 - 새 외래 키 제약 조건 클릭 - 스키마/테이블/제약조건 선택>

 

 

 

 

                                <key 설정 전>                                                                  <key 설정 후>

 

 

<EmpController.java>   

·  EmpVO, EmpService, EmpServiceImpl, EmpMapper, Criteria, PageVO, list2.jsp는 동일하게 작성!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 @Log4j
 @AllArgsConstructor
 @Controller
 public class EmpController {
    private EmpService empService;
 
    @GetMapping("/emp/list2")
    public String list(Criteria cri, Model model) {
        model.addAttribute("list", empService.getlist());
        log.info("list2");
        
        model.addAttribute("list2", empService.getlist(cri));
        log.info("cri");
        int total = empService.getTotal(cri);
 
        model.addAttribute("pageMaker"new PageVO(cri, total));
        return "list2";
    }
 } 
cs

 

 

<EmpMapper.xml>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 <select id="getlist" resultType="edu.bit.ex.emp.vo.EmpVO">
    <![CDATA[
        select * from emp01
    ]]>
 </select>
    
 <select id="getListWithPaging" resultType="edu.bit.ex.emp.vo.EmpVO">
    <![CDATA[
        select * from
           select rownum as rnum, A.* from (
               select * from emp01
           ) A where rownum <= #{pageNum} * #{amount}
        )where rnum > (#{pageNum}-1* #{amount}
    ]]>
 </select>
    
 <select id="getTotalCount" resultType="int">
    <![CDATA[
        select count(*from emp01
    ]]>
 </select>
cs

 

 

<구현 화면>

· emp를 똑같이 복사했기 때문에 내용이 동일하여 emp01에 row 추가해서 출력해보았다.

 

 

 

4. 아래의 페이지에서 Jquery로 makeList() 함수를 완성하여, 페이지를 출력하시오.

 

 

<makeList.jsp>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>    
   <script type="text/javascript">
       function makeList() {
            var str = ""
            str += "<c:forEach items='${list}' var='vo'>";
            str += "<tr>";
            str += "<td>${vo.empno}</td>";
            str += "<td>${vo.ename}</td>";
            str += "<td>${vo.job}</td>";
            str += "<td>${vo.mgr}</td>";
            str += "<td>${vo.hiredate}</td>";
            str += "<td>${vo.sal}</td>";
            str += "<td>${vo.comm}</td>";
            str += "<td>${vo.deptno}</td>";
            str += "</tr>";
            str += "</c:forEach>";
            
            $("#list-table").html(str);
            //document.getElementById("list-table") = str;
       }
    </script>
    <script>
        $(document).ready(function(){
              makeList();
        });
    </script>    
 </head>
  <body>
      <table id="list"  width="600" cellpadding="0" cellspacing="0" border="1">
         <tr>  
             <td>EMPNO</td>
             <td>ENAME</td>
             <td>JOB</td>
             <td>MGR</td>
             <td>HIREDATE</td>
             <td>SAL</td>
             <td>COMM</td>
             <td>DEPTNO</td>
         </tr>
     </table> 
     <table id="list-table" width="600" cellpadding="0" cellspacing="0" border="1">
    </table>
 </body>
cs

 

 

 

<구현 화면>

· 하나의 테이블로 작성하고 싶었으나 예상대로 body 내용이 사라져서 두 개의 테이블을 생성...하였다..