by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

사원 상세정보 조회 기능완성




사원 상세정보 조회 기능완성

1. 상세정보 조회 SQL문 작성

  • Emp.xml 파일에 사원의 상세정보를 조회하는 "selectEmp" 문장을 추가한다.
/src/main/resources/sqlmap/Emp.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="emp">

  	<typeAlias alias="emp" type="com.oracleclub.study.mvc.model.Emp"/>

 	<select id="selectEmpList" resultClass="emp"  >
		SELECT empno, ename, job, sal, NVL(mgr,0) mgr
		  FROM emp 
 	</select> 	

    <select id="selectEmp" resultClass="emp" parameterClass="int"  >
		SELECT empno, ename, job, sal, NVL(mgr,0) mgr, deptno
		  FROM emp 
		 WHERE empno = #empno#
 	</select> 
 	
	<insert id="insertEmp"  parameterClass="emp"  >
 	    INSERT INTO emp (empno, ename, job, sal, mgr,  hiredate, deptno)
        VALUES (#empno#, #ename#, #job#, #sal#, 0, #hiredate#, #deptno#)
    </insert> 
  	
</sqlMap>

2. EmpDAO 수정

  • 사원의 상세정보를 조회하는 selectEmp 메소드를 추가한다.
  • 사원번호(empno)를 파라미터로 받아서 사원상세정보(Emp)를 반환한다.
com.spring.mvc.dao.EmpDAO.java
package com.oracleclub.study.mvc.dao;

import java.util.List;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.oracleclub.study.mvc.model.Emp;

/**
 * 사원정보를 관리하는 DAO
 * 
 * @author : oramaster
 * 
 */
@Repository
public class EmpDAO extends SqlMapClientDaoSupport {

	private static final String NAMESPACE = "emp.";

	/**
	 * 사원정보 등록
	 * @param emp
	 */
	public void insertEmp(Emp emp) {
		getSqlMapClientTemplate().insert(NAMESPACE + "insertEmp", emp);
	}

	/**
	 * 사원목록 정보 조회
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<Emp> selectEmpList() {
		return (List<Emp>)getSqlMapClientTemplate().queryForList(NAMESPACE + "selectEmpList");
	}

	/**
	 * 사원 정보 조회
	 * @param empno
	 * @return
	 */
	public Emp selectEmp(int empno) {
		return (Emp)getSqlMapClientTemplate().queryForObject(NAMESPACE + "selectEmp", empno);
	}
}

3. EmpBO.java 수정

  • 사원의 상세정보를 반환하는 getEmp 메소드를 생성한다.
com.oracleclub.study.mvc.bo.EmpBO.java
package com.oracleclub.study.mvc.bo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.oracleclub.study.mvc.dao.EmpDAO;
import com.oracleclub.study.mvc.model.Emp;

/**
 * 사원관리 비즈니스로직 처리
 * 
 * @author : oramaster
 * 
 */
@Service
public class EmpBO {

	@Autowired
	private EmpDAO empDAO;

	/**
	 * 사원목록 조회
	 * 
	 * @return
	 */
	public List<Emp> getEmpList() {
		return empDAO.selectEmpList();
	}

	/**
	 * 사원정보 조회
	 * @param empno
	 * @return
	 */
	public Emp getEmp(int empno) {
		return empDAO.selectEmp(empno);
	}

	/**
	 * 사원정보 등록
	 * @param emp
	 */
	public void registerEmp(Emp emp) {
		empDAO.insertEmp(emp);
	}
}

4. EmpViewController 완성

  • 사원의 상세정보를 반환하는 EmpViewController를 생성한다.
  • @PathVariable을 이용하여 사원번호를 고유주소로 사용할 수 있게 하였다.
  • 사원정보를 view.jsp 파일로 반환한다.
com.oracleclub.study.mvc.controller.EmpViewController.java
package com.oracleclub.study.mvc.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.oracleclub.study.mvc.bo.EmpBO;

/**
 * 사원 상세정보 조회
 * 
 * @author : gurubee
 * 
 */
@Controller
public class EmpViewController {

	@Autowired
	private EmpBO empBO;

	@RequestMapping(value = "/emp/view/{empno}")
	public ModelAndView view(@PathVariable int empno) {

		ModelAndView mv = new ModelAndView();

		// 사원정보 조회 추가
		mv.addObject("emp", empBO.getEmp(empno));

		// View 지정
		// mvc-dispatcher-servlet.xml 파일의 viewResolver를 사용
		mv.setViewName("emp/view");

		return mv;
	}
}

5. list.jsp 수정

  • 사원상세정보 조회 링크를 아래와 같이 수정한다.
..
<td><a href="/emp/view/${emp.empno}">${emp.ename}</a></td>
..

6. 테스트

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.