#spring 13

제로·2023년 1월 29일
0

Spring

목록 보기
13/18

1.사원정보 관리(MVC)

  1. 검색키워드 : ename, dname, mgr(name), job 으로 검색 ename제외 나머지 콤보박스 형으로 선택
# combo box 형태로 검색어 만들기
1) dname으로 콤보박스 만들기
- dao 인터페이스에 메서드 선언 : public List<Dept> getDeptComb();
- mapper 처리 : 
    <select id="getDeptComb" resultType="dept">
         select deptno, dname from dept100
    </select>
- service단 처리 : 
	public List<Dept> getDeptComb(){
		return dao.getDeptComb();
	}
- controller 처리 : 
	@ModelAttribute("deptCom")
	public List<Dept> getDeptComb(){
		return service.getDeptComb();
	}
- view단 처리 : 
	<select name="deptno" class="form-control mr-sm-2">
	    	<option value="0">부서선택</option> // 숫자형 default 0
      // model attribute로 선언한 모델명을 불러와서 forEach로 출력 
	    	<c:forEach var="dept" items="${deptCom}">
	    	<option value="${dept.deptno }">${dept.dname}</option>
	    	</c:forEach>
	 </select>

2) mgr(name) 관리자명으로 된 콤보박스 만들기
- dao 인터페이스 선언 : 
	public List<Code> getMgrComb();
    // cf) public class Code{ private String key, private String val }
- mapper 처리 : // 관리자의 사원번호를 key값으로 관리자명을 val값으로    
	<select id="getMgrComb" resultType="code">
		SELECT DISTINCT  e.mgr key, m.ename val FROM emp100 e, emp100 m WHERE e.mgr=m.empno
	</select>
- view단 처리 : 
	<select name="mgr" class="form-control mr-sm-2">
	    	<option value="0">관리자선택</option> // 숫자형 default 0
	    	<c:forEach var="mgr" items="${mgrCom}">
	    	<option value="${mgr.key }">${mgr.val}</option>
	    	</c:forEach>
	    </select>

3) job 직책명으로 된 콤보박스 만들기
- mapper 처리 : 
	<select id="getJobComb" resultType="string">
		SELECT DISTINCT job FROM emp100
	</select>
- view단 처리 :     
	<select name="job" class="form-control mr-sm-2">
	    	<option value="">직책선택</option> // 문자형 default ""
	    	<c:forEach var="job" items="${jobCom}">
	    	<option>${job}</option>
	    	</c:forEach>
	 </select>
  1. 사원정보 조회
- dao 인터페이스 : public List<Emp> getEmpList(Emp sch);
- mapper 처리 :
	<select id="getEmpList" resultType="emp" parameterType="emp">

	  	select e.empno, e.ename, d.dname, m.ename mename, e.job
	 	from emp100 e, emp100 m, dept100 d
  // outer join  e.mgr과 m.empno가 매치되지 않을 때 e.mgr은 출력되고 m.empno는 null로 출력       
	 	where e.mgr = m.empno(+)
	 	and d.deptno = e.deptno	
	 	and e.ename LIKE '%'||#{ename}||'%'
		AND e.job like '%'||#{job}||'%'
  // mybatis의 동적 쿼리 숫자형인 mgr, deptno의 데이터가 없을 때 (0일 때)는 쿼리문이 실행되지 않고, 검색 데이터가 있을 때만 쿼리문이 실행
		<if test='mgr != 0'>	
		and e.mgr = #{mgr}
		</if>
		<if test='deptno != 0'>
		and e.deptno=#{deptno}
		</if>
		order by e.deptno, e.mgr, e.job
        
  	</select>
- service 단 처리 :
	public List<Emp> getEmpList(Emp sch){
		if(sch.getEname()==null) sch.setEname("");
		if(sch.getJob()==null) sch.setJob("");
		return dao.getEmpList(sch);
	};
- controller 단 처리 :
	@RequestMapping("empListMy.do")
	public String empList(@ModelAttribute("sch") Emp sch, Model d) {
		d.addAttribute("empList",service.getEmpList(sch));
		return "\\WEB-INF\\views\\a05_mvc\\a01_empList.jsp";
	}
- view단 처리 : 검색처리가 되어도 작성했던 검색어가 남아있도록 설정
	<input name="ename" value="${sch.ename }" class="form-control mr-sm-2" placeholder="사원명" />
    
    <script type="text/javascript">
	$(document).ready(function(){
		$("[name=deptno]").val("${sch.deptno}");
	    $("[name=mgr]").val("${sch.mgr}");
	    $("[name=job]").val("${sch.job}");	
	});
</script>

	// 출력된 결과가 나오는 table
    <tbody>
    <c:forEach var="emp" items="${empList}">
    	<tr><td>${emp.empno }</td><td>${emp.ename }</td><td>${emp.dname }</td>
    	<td>${emp.mename }</td><td>${emp.job }</td>
    	</tr>
    </c:forEach>
    </tbody>
profile
아자아자 화이팅

0개의 댓글

관련 채용 정보