티스토리 뷰

DB/MyBatis

MyBatis 사용하기!!

쟌쥰 2020. 1. 30. 15:35

본래 java 서버와 DB의 연동에서 jdbcTemplate 를 사용했다..

1,2,3,4,5 일련의 코드 과정을 거쳐서,,,

마이바티스는 이 과정을 쿼리만 작성하면 모두 자동으로 동작시켜 준다.

 

마이바티스 프레임워크는 jdbcTemplate 같이 반복되는 과정을 정리해 놓은 것처럼 이를 정리해 놓은 프레임 워크 이다.

 

**프레임워크라는 것은 어떠한 공통적은 코드의 부분을 모두 자동으로 동작하도록 짜 놓은 것을 말한다. 일종의 반복되는 코드 과정을 정리해 놓은 구조, 틀 이라고 할 수 있다.

 

**iBatis 는 마이바티스의 조상 뻘 이다. 1 -> 2 -> 3 버전을 거쳐오다가 마이바티스라는 이름으로 바뀌었다.

 

**ORM(Object-relational mapping)

 

마이바티스 소개글~

https://mybatis.org/mybatis-3/ko/index.html

 

MyBatis – 마이바티스 3 | 소개

마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다.

mybatis.org

https://mybatis.org/mybatis-3/ko/getting-started.html

 

MyBatis – 마이바티스 3 | 시작하기

이제부터 다룰 스코프와 생명주기에 대해서 이해하는 것은 매우 중요하다. 스코프와 생명주기를 잘못 사용하는 것은 다양한 동시성 문제를 야기할 수 있다. 의존성 삽입 프레임워크는 쓰레드에 안전하도록 해준다. 트랜잭션 성질을 가지는 SqlSessions과 매퍼들 그리고 그것들을 직접 빈에 삽입하면 생명주기에 대해 기억하지 않아도 되게 해준다. DI프레임워크와 마이바티스를 사용하기 위해 좀더 많은 정보를 보기 위해서는 MyBatis-Spring이나 MyBatis

mybatis.org

다음 실습 과정은 위 링크에 나와있는 내용을 기반으로 한다!! 이 내용보다 소개글을 보시는게 좋을수도,,,ㅎㅎ 설명이 잘나와있는것 같다!!


시작하기 - MyBatis 사용하려면~~

마이바티스를 사용하기 위해 mybatis-x.x.x.jar 파일을 클래스패스에 두어야 한다.

mybatis-3.5.3.zip 다운로드~~

mybatis-3.5.3.pdf
0.25MB

다운로드 받으면 사이트의 내용을 pdf로 정리해 놓은 파일이 존재한다.

mybatis.pdf
0.03MB

이거는 번역판입니당~

 

 


프로젝트 시작하기!

프로젝트는 workspace_web 의 jsp01_myboard 를 복붙 해서 사용합니다!!

 

jsp01_myboard_mybatis 라는 이름으로!!

 

이 과정에서 바뀔것은 JDBCTemplate 를 사용하지 않고!!  Dao가 수정된다!!

 

일단 프로젝트를 복사 붙여넣기 하고!!

 

mybatis-3.5.3.jar 파일을 WebContent - WEB_INF - lib 에 붙여넣기 해준다!!

프로젝트는 jdbcTemplate를 일단 지운 상태이다!!

 

** 참고로 프로젝트를 실행할때 복붙한 상태에서는 contextRoot가 같기때문에 jsp01_myboard_mybatis를 제외한 모든 프로젝트는 removeAll 하고 실행해 주어야 한다!!

 

빨간줄 없애려면 dao 의 내용을 모두 비워주면 된다!! 어차피 dao 의 모든 메서드는 모두 mybatis 를 이용한 방식으로 바뀔 것이기 때문에!! 메서드 틀만 냄겨놓고 다 지운다!!!

이렇게 말이다!! ㅎㅎㅎㅎㅎㅎ

 

 

마이바티스를 실제 사용하려면 그림 위의 세줄 코드를 복사 붙여넣기한다.

 

16줄에 resource는 수정되었따!! 이 링크는 우리가 직접 xml 파일을 만들어줄 것이다!!

 

import는 코드 import를 참조한다!! 엉뚱한 것을 import 하면 안되기 때문에 잘 보시길 바란다!! ㅎㅎ

 

 

이제 com.my.db 패키지에 mybatis-config.xml 파일을 만들어 홈페이지의 xml 소스를붙여넣는다.

 

이 xml 은 jdbc 에서 드라이버 연결, 계정연결 설정과 같은 역할을 하는 코드이다.!!

 

다음은 일반 file 을 com.my.db 패키지에 만든다. 이름은 db.properties 이다..

 

**참고로 properties는 map 의 구조를 가진 Collection 중 하나이다... 키와 밸류가 스트링 타입인 Map 이라 생각하면 된다!!

 

다음은 mybatis-config.xml 로 가서 이 properies 를 사용하겟다는 코드를 추가한다!! 7번째 줄!!

 

21줄에 mapper 요소 또한 수정되었다!!

 

 

이제 얼추 환경설정이 다 끝나간다~~

dao 에 코드는 이렇게 적용된다.

 

28줄에 맵핑은 다음 코드와 연결된다.

com.my.db 패키지에 mybatis-mapper.xml 을 만들어준다.

 

이 맵핑은 mybatis-mapper.xml 의 mapper namespace 와 연결된다!!

 

문제없이 코드를 적용했다면 다음과 같이 리스트가 잘 나오는걸 확인할 수 있따!!

 

정리하자면

기존 코드에서 수정 적용된 부분은 다음과 같다.

  • lib  에 mybatis-3.5.3.jar 파일 추가하기
  • JDBCTemplate 없애기!!
  • com.my.db 패키지에 xml 밑 일반 file 추가하여 환경설정하기!
  • dao 수정하기

 


https://mybatis.org/mybatis-3/ko/configuration.html#

 

MyBatis – 마이바티스 3 | 매퍼 설정

매퍼 설정 마이바티스 XML 설정파일은 다양한 설정과 프로퍼티를 가진다. 문서의 구조는 다음과 같다.: configuration properties 이 설정은 외부에 옮길 수 있다. 자바 프로퍼티 파일 인스턴스에 설정할 수도 있고 properties 엘리먼트의 하위 엘리먼트에 둘수도 있다. 예를들면: 속성들은 파일 도처에 둘수도 있다. 예를들면: 이 예제에서 username과 password는 properties엘리먼트의 설정된 값으로 대체될 수 있다.

mybatis.org

매퍼설정도 잘 공부하시길 바란다~ 

 

매퍼설정의 내용 중 typeAlias 에 대한 부분은 다음과 같이 적용시켜 보았다!!

 

 


https://mybatis.org/mybatis-3/ko/sqlmap-xml.html

 

MyBatis – 마이바티스 3 | 매퍼 XML 파일

Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면 아마도 95% 이상 코드수가 감소하기도 한다. 마이바티스는 SQL을 작성하는데 집중하도록 만들어졌다. SQL Map XML파일은 첫번째(first class)엘리먼트만을 가진다. cache - 해당 네임스페이스을 위한 캐시 설정 cache-re

mybatis.org

마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면 아마도 95% 이상 코드수가 감소하기도 한다. 마이바티스는 SQL을 작성하는데 집중하도록 만들어졌다.

 

소개글에 이렇게 나올정도로 자랑스러워하는것같다!! 이게 마이바티스의 말하자면 꽃 이다!! 꽃!!(flower)

 

이것도 신기한거 같다!!

신기해서 해보려고한다..ㅎㅎ

DAO 에서 selectOne 메서드에 적용시켜 보겠다!!

 

드래그 선택한 부분을 보면 selectOne 에 맵핑과 함께 파라미터를 하나 보낸걸 볼 수 있다..

mapper 에서는 다음과 같이 파라미터 값을 받는다 #{MYNO} 라고,,, 아주 신기하다,,,

 

 

프로젝트를 실행해서 제목을 눌러보면 selectOne 메서드를 타고 들어가 글의 내용이 잘 보이는걸 볼 수 있다.. 대단쓰...

 


이제 api document 를 보고 나머지 insert update delete도 만들어 보겠다.. 어휴 귀찮,,,

 

https://mybatis.org/mybatis-3/ko/apidocs/index.html

 

Overview (mybatis 3.5.3 API)

The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications.

mybatis.org

 

DB의 컬럼명과 JAVA의 DTO(VO) 의 필드명이 다를 경우!!????

mapper에서 resultMap 을 통해 컬럼과 필드를 매칭해 줄 수 있다!!

뭐 어차피 컬럼명이랑 dto 필드명을 똑같이 맞춰놔서 문제는 없었지만 테스트용으로 한번 해보았다.

만들어진 myMap 이라는 resultMap 은 select 태그에 selectList 에서 적용시켜 보았다.

 


다음 시간에는 jsp02_multidelete 도 jsp02_multidelete_mybatis로 만들어보겠다!!

 

'DB > MyBatis' 카테고리의 다른 글

MyBatis XML Files ,,, DTD 파일 설정  (0) 2020.02.02
MyBatis multiQuery 실습 해보기  (0) 2020.02.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함