내용

글번호 595
작성자 heojk
작성일 2017-02-13 12:25:24
제목 [실습] Spring-MyBatis를 이용한 Employees 테이블 데이터 관리하기
내용 * [실습] Employees 테이블 데이터 관리하기 예제를 진행 한 예제에서 Repository 클래스를 MyBatis를 이용한 Mapper로 구현하는 예제입니다. 진행하기 전에 게시글 573번 글의 첨부파일을 이클립스에서 import 하세요. File > Import > Existing project into workspace > select archive file - http://javaspecialist.co.kr/jboard/view.do?categoryId=4&boardId=573&page=1 1. pom.xml에 mybatis와 mybatis-spring 의존성 추가
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>
2. application-config.xml 파일에 mapperLocations 설정 및 매퍼 스캐너 설정
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="mapperLocations" value="classpath:kr/co/javaspecialist/**/*.xml" />
	</bean>

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="kr.co.javaspecialist.hr.model" />
	</bean>
3. DAO 인터페이스 작성(IEmpRepository)
package kr.co.javaspecialist.hr.model;
 
import java.util.List;
 
public interface IEmpRepository {
    List<EmpVO> getEmpList();
    EmpVO getEmpDetails(int employeeId);
    int updateEmp(EmpVO emp);
    int deleteEmp(int employeeId);
    int insertEmp(EmpVO emp);
}
4. Mapper 구현
<?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="kr.co.javaspecialist.hr.model.IEmpRepository">

	<resultMap id="empMap" type="kr.co.javaspecialist.hr.model.EmpVO">
		<result property="employeeId" column="EMPLOYEE_ID" />
		<result property="firstName" column="FIRST_NAME" />
		<result property="lastName" column="LAST_NAME" />
		<result property="email" column="EMAIL" />
		<result property="phoneNumber" column="PHONE_NUMBER" />
		<result property="hireDate" column="HIRE_DATE" />
		<result property="jobId" column="JOB_ID" />
		<result property="salary" column="SALARY" />
		<result property="commissionPct" column="COMMISSION_PCT" />
		<result property="managerId" column="MANAGER_ID" />
		<result property="departmentId" column="DEPARTMENT_ID" />
	</resultMap>

	<select id="getEmpList" resultMap="empMap">
		SELECT * FROM EMPLOYEES
	</select>

	<select id="getEmpDetails" parameterType="int"
		resultType="kr.co.javaspecialist.hr.model.EmpVO">
		SELECT
		EMPLOYEE_ID AS "employeeId",
		FIRST_NAME AS "firstName",
		LAST_NAME AS "lastName",
		EMAIL AS "email",
		PHONE_NUMBER AS "phoneNumber",
		HIRE_DATE AS "hireDate",
		JOB_ID AS "jobId",
		SALARY AS "salary",
		COMMISSION_PCT AS "commissionPct",
		MANAGER_ID AS "managerId",
		DEPARTMENT_ID AS "departmentId"
		FROM EMPLOYEES
		WHERE EMPLOYEE_ID = #{empId}
	</select>

	<update id="updateEmp" parameterType="kr.co.javaspecialist.hr.model.EmpVO">
		UPDATE EMPLOYEES
		SET FIRST_NAME=#{firstName}, LAST_NAME=#{lastName}, SALARY=#{salary}
		WHERE EMPLOYEE_ID=#{employeeId}
	</update>

	<delete id="deleteEmp" parameterType="int">
		DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID=#{employeeId}
	</delete>

	<insert id="insertEmp" parameterType="kr.co.javaspecialist.hr.model.EmpVO">
		INSERT INTO EMPLOYEES
		(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER,
		HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID)
		VALUES
		(#{employeeId}, #{firstName}, #{lastName}, #{email}, #{phoneNumber},
		SYSDATE, #{jobId}, #{salary}, #{commissionPct}, #{deptartmentId})
	</insert>

	<select id="getAllEmployeeId" resultType="kr.co.javaspecialist.hr.model.EmpVO">
<![CDATA[
    SELECT 
	EMPLOYEE_ID AS "employeeId",
	FIRST_NAME || ' ' || LAST_NAME AS "firstName", 
	LAST_NAME AS "lastName" 
    FROM EMPLOYEES
]]>
	</select>

</mapper>
4. 컨트롤러 파일 의존성 변경
    @Autowired
    @Qualifier("IEmpRepository")
    IEmpRepository empRepository;
 
* 첨부파일은 완성된 프로젝트 파일입니다.
첨부파일 SpringWebMVC_MyBatis.zip (26,473byte)