본문 바로가기
Back/spring

MyBatis 개념

by 시월해 2021. 6. 30.

* MyBatis
  - 객체지향언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 구현할 수
        있도록 도와 주는 개발 프레임워크임.
  - 자바는 JDBC API를 제공해 주지만, 이런 JDBC를 이용하면 한 개의 클래스에
        반복된 코드가 존재, 한 파일에 Java 언어와 SQL 언어가 섞여 있어서 재사용성
        등이 안 좋아지는 단점이 발생함.
  - MyBatis는 이러한 JDBC의 단점들을 개선했으며, 개발자가 작성한 SQL 명령어와
        자바 객체를 매핑해 주는 기능을 제공하며, 기존에 사용하던 SQL 명령어를 재사용이
        가능하게 해 줌.
        
* MyBatis 의 특징
  - 한 두 줄의 자바 코드로 DB 연동을 처리해 줌.
  - SQL 명령어를 자바 코드에서 분리하여 XML 파일에 따로 관리.

<?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">

<!-- namespace 명은 패키지 포함해서 인터페이스 이름으로 작성을 해 주어야 함.
     namespace는 mapper 둘을 구분하는 식별자로 매우 중요함. -->
<mapper namespace="com.spring.model.EmpDAO">

   <select id="allList" resultType="com.spring.model.EmpDTO">
   		select * from emp order by empno
   </select>
   
   <select id="deptList" resultType="com.spring.model.DeptDTO">
   		select * from dept order by deptno
   </select>
   
   <select id="mgrList" resultType="com.spring.model.EmpDTO">
   		select * from emp where job = 'MANAGER' order by empno 
   </select>
   
   <insert id="add" parameterType="com.spring.model.EmpDTO">
   		insert into emp values(#{empno}, #{ename}, #{job}, #{mgr},
   				sysdate, #{sal}, #{comm}, #{deptno})
   </insert>
   
</mapper>


  
* MyBatis 설정 작업
  - 스프링과 MyBatis를 연동하기 위한 라이브러리 설정 - pom.xml
    - MyBatis 프레임워크 라이브러리 추가.
    - MyBatis-Spring 라이브러리 추가.
    - Spring-JDBC 라이브러리 추가.
    
    - 데이터베이스와 연결을 담당하는 DataSource 객체 설정.

 

		<!-- mybatis 프레임워크 라이브러리 -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.4.6</version>
		</dependency>
		
		<!-- mybatis-spring 라이브러리 -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>1.3.2</version>
		</dependency>
		
		<!-- spring-jdbc 라이브러리 -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-jdbc</artifactId>
		    <version>${org.springframework-version}</version>
		</dependency>
		
		<!-- lombok 라이브러리 -->
		<dependency>
		    <groupId>org.projectlombok</groupId>
		    <artifactId>lombok</artifactId>
		    <version>1.18.20</version>
		    <scope>provided</scope>
		</dependency>
		
		<!-- c3p0(스프링 커넥션풀 설정) 라이브러리 -->
		<dependency>
		    <groupId>com.mchange</groupId>
		    <artifactId>c3p0</artifactId>
		    <version>0.9.5.2</version>
		</dependency>