본문 바로가기

Spring Framework

4. Mybatis

MyBatis 

- 데이터의 입력, 조회, 수정, 삭제(CRUD)를 보다 편하게 하기 위해 XML로 구조화한 Mapper 설정 파일을 통해 JDBC를 구현한 영속성 매핑 프레임워크 

 - SQL 쿼리를 XML파일에 작성하여 사용

 

 

흐름 

 

동작구조 

 

설정하기 

1.  카탈로그 생성 

Preferences - XML Catalog → User Specified Entries - Add 

(만약 Location이 안보인다면 창 크기를 늘려보기)

 

2. mybatis-config.xml 생성

경로: src/main/resources 

바로 finish 하지 말고 next 하여 Create file using a DTA or XML Schema file → Select XML Catalog entry 선택하여 위에서 만든 카탈로그 선택 후 finish

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>

	<!-- mybatis 관련 설정 작성 : 순서 중요! -->
	
	<!-- SqlSessionTamplate 관련 설정 -->
	<settings>
		<setting name="jdbcTypeForNull" value="NULL"/>
		<!-- null 값이 있으면 NULL(대문자 주의)을 INSERT or UPDATE -->
		<!-- 
		INSERT or UPDATE 진행 시 null이 포함된 경우 Mybatis는 기본적으로 에러를 발생시킨다. 
		해당 구문이 작성되면 지정된 value로 값을 INSERT or UPDATE 시키는 setting 
		-->
	</settings>
	
	
	<!-- 별칭 작성 부분 -->
	<!-- VO클래스의 패키지명 + 클래스명 모두 작성하는 것이 불편하기 때문에 짧은 별칭 부여 -->
	<typeAliases>
	</typeAliases>
	
	
	<!-- SQL이 작성되는 mapper 파일 위치 등록 -->
	<mappers>
		<mapper resource="/mappers/member-mapper.xml"/>
	</mappers>
	
	
</configuration>

 

3. member-mapper.xml 생성 

경로: src/main/resources/mappers 

 

✓ mapper 파일 생성 시 반드시 해야하는 것. 

   - cache-ref 삭제 

   - mapper 태그에 namespace 속성 추가(namespace: 해당 파일을 쉽게 부르는 이름, DAO에서 사용함) 

 

✓ 수행하려는 SQL에 따라서 태그가 구분된다.(사용 가능한 속성도 다름) 

   - <select><insert><update><delete>

 

✓ select 태그의 속성 

  - id: 구문을 찾기 위해 사용할 namespace 내 구분자 

  - parameterType: 구문에 전달될 파라미터의 클래스 명이나 별칭

  - resultType: 조회 결과가 1행 1열인 경우에만 작성한다. 

  - resultMap: 사용할 resultMap의 id

  - 조회된 데이터의 Java 자료형을 Mybatis 별칭 형태로 작성해야 한다. 

  [Mybatis 별칭 예시]

Java Mybatis
int, double, float, boolean _int, _double, _float, _boolean
String, Date, Map, List string, date, map, list

 

'Spring Framework' 카테고리의 다른 글

5. 1행만 조회하기  (0) 2023.04.25
3. 파라미터 얻어오기, 화면 전환하기  (0) 2023.04.24
2. DispatcherServlet, logger  (0) 2023.04.22
1. Spring Framework란?  (0) 2023.04.22