08_MyBatis

송지윤·2024년 4월 3일
0

Spring Framework

목록 보기
8/65

MyBatis란?

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

  • 기존에 JDBC를 통해 구현했던 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 xml 설정을 통해 쉽게 구현할 수 있음

  • MyBatis 공식 페이지 https://mybatis.org/mybatis-3/ko/

JDBC 프레임워크
C reate 생성
R ead 조회
U pdate 수정
D elete 삭제

DB단 프레임워크
xml 파일 형태 많이 사용

Mybatis 동작 흐름

  • 기존에 JDBCTemplate 을 통해 SQL 을 실행하였다면 Mybatis는 해당 과정전용 라이브러리를 통해 대체하여 동작한다고 생각하면 됨.

Mybatis 내부 동작 구조

SqlSession Connection + 마이바티스
Factory Bean 공장도 가동이 되려면 객체 형태가 돼있어야함
Bean Spring이 생성하고 Spring이 관리하는 객체

각종 설정들을 작성해둔 파일 mybatis-config.xml (직접 작성할 거)

공장 통해서 만들어진 게 SqlSession Template (SqlSession + 트랜잭션)

mapper.xml 파일에다가 sql 쿼리문 모아둘 거

오른쪽에 작성된 메서드들 통해서 sql 실행할 수 있음

STS4는 XML 파일 생성 마법사가 없기 때문에 MarketPlace를 이용해서 Eclipse XML Editors and Tools 설치 필요

메뉴 바 Help -> Eclipse Marketplace -> Find 검색 창에 xml 검색 enter -> confirm -> license accept (위에거 체크하고 Finish) -> PGP 체크하고 trust selected 클릭 -> restart now 클릭

Mybatis를 이용하기 위한 XML 파일 DTD(Document Type Definition) 추가

  • Window - Preferences - XML - XML Catalog - User Specified Entries 클릭 – Add... 클릭

(아래 내용을 차례대로 추가 그대로 복사 붙여넣기 하고 ok)

하고 apply and close

mybatis-config.xml 생성

mybatis 이용하려면 필요함 오타나면 안됨

  • src/main/resources’폴더에 mybatis-config.xml 파일 생성

바로 finish 누르면 안되고 next 누른 다음에 위에 거 선택해야함

next 아래 거 선택 user specified entries 누르고 dtd config next

아무것도 건들지 말고 finish

mybatis-config.xml 파일 내용 작성

source 탭 누르면 내용 뜸
빨간 줄 에러 뜰 때 window -> preferences -> xml wild web developer -> download external resources 체크 하고 apply and close 하면 빨간 줄 사라짐

configuration (설정) 태그 사이에 내용 작성

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/EN" "http://mybatis.org/dtd/mybat
<configuration>
	<settings>
		<!-- Java -> DB로 INSERT,UPDATE 시 Java의 null 값을 DB의 NULL로 인식하도록 설정-->
		<setting name="jdbcTypeForNull" value="NULL" />
		<!-- DB의 UnderScore (_) 표기법 <-> Java의 Camel 표기법
			두 표기법이 서로 변환 될 수 있도록 매핑하여
			Java 필드명(memberId)과 DB 컬럼명(MEMBER_ID)가 서로 연결되게 함
		-->
		<setting name="mapUnderscoreToCamelCase" value="true" />
	</settings>
</configuration>

java -> null : null 참조하는 게 없다
db -> null : null 값 자체가 없다

java userName 카멜 표기법
db USER_NAME 언더스코어 표기법

JDBC 할 때
DAO 에서 String userName = rs.getString("USER_NAME");
이거를 둘이 작성된 문자만 똑같다면 둘이 같은 거다라는 인식 설정

*-mapper.xml 생성

  • src/main/resources’폴더에 ‘mappers’ 폴더 생성 후 mapper.xml 파일 생성

sql 들 넣는 파일이라서 폴더 하나 만듦

*-mapper.xml 파일 기본 작성 방법

<cache-ref namespace=""/>

이 태그는 mapper.xml 만들자마자 삭제해야함

삭제 안하면 오류남

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-m
<mapper namespace="연결할 Mapper 인터페이스 파일 경로 작성 (필수)">
	<!-- 해당 태그는 무조건 삭제!! -->
	<!--<cache-ref namespace=""/>-->
	<!-- 수행 하려는 SQL 구문 태그 작성-->
	<select id="" parameterType="" resultType="">SQL 작성</select>
	<insert id="" parameterType="">SQL 작성</insert>
	<update id="" parameterType="">SQL 작성</update>
	<delete id="" parameterType="">SQL 작성</update>
</mapper>

int num 가져왔으면 parameterType 에 _int 또는 _integer 써야함
String 쓸 거면 string 이렇게 써야함
Integer 는 int 로 써야함

resultType 조회 결과를 어디에 담아 보낼건지 작성해줘야함

mapper 태그에 namespace 지정하는 게 가장 중요함

id

구문을 찾기 위해 사용될 수 있는 네임스페이스 내 유일한 구분자
Mapper 인터페이스의 메서드명 동일하게 작성

parameterType

구문에 전달될 파라미터의 클래스 명(패키지 경로 포함)이나 별칭

resultType

리턴되는 타입의 패키지 경로를 포함한 전체 클래스 명이나 별칭, collection인 경우 list, arraylist로 설정할 수 있다.

/Mybatis에서 기본적으로 제공하는 Java 기본 자료형/객체 별칭

0개의 댓글