* [실습] 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;
* 첨부파일은 완성된 프로젝트 파일입니다. |