본문 바로가기
Backend

Mybatis ( Mybatis 실습 / Java DB 연결 / 웹개발 / 웹독학 / 백엔드 개발자 / 프로그래밍)

by 비전공자 기록광 2021. 4. 5.
반응형

Mybatis

마이바티스는 JDBC처럼 Java 프로젝트와 DB를 연결하는 프레임워크이다.

다시말해 JDBCTemplate 의 역할을 대신해준다고 보면 된다.

 

홈페이지의 소개글에 따르면 마이바티스의 역할은 이렇다.

 

마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다. 

 

JDBC에 대해 궁금하다면 참고

2021.02.03 - [IT 독학/WEB] - JDBC ( JDBC 실습 / Java DB api / Java DB 연결 / JDBCTemplate / 웹개발 / 웹기초 / 웹독학 / 백엔드 개발자 / 프로그래밍)

 

 

 

 

JDBC와의 차이는 실습을 통해 보겠다.

 

실습 준비

일단 기본 중의 기본이었던 JSP 실습 파일에서 JDBC을 지우고 Mybatis를 넣어 구현해보도록 한다.

 

JDBC에서 Mybatis로만 바뀌는 실습이라 고대로 복사 붙여넣기 해줬다. 

 

▷ JSP 실습파일

2021.02.03 - [IT 독학/WEB] - [JSP ①] JSP 실습 준비 (톰캣 연결 / 서버 연결 / 프로젝트 생성 / 개발환경 UTF-8 설정 / 웹개발 기초 / 웹개발 독학 )

 

참고로 이건 기본 CRUD 게시판이다.

 

 

 

1. Mybatis 다운

일단 JDBC를 쓰기위해 OJDBC를 다운받았던 것처럼 Mybatis도 파일을 다운받아 라이브러리에 넣어주면 된다.

 

다운은 여기서 하면 된다.

Releases · mybatis/mybatis-3 · GitHub

 

Releases · mybatis/mybatis-3

MyBatis SQL mapper framework for Java. Contribute to mybatis/mybatis-3 development by creating an account on GitHub.

github.com

다운을 받고 압축을 풀어 이클립스의 lib 에 넣어주면 된다. 

 

 

2. Dao 생성

JDBC를 이용한 dao는 지워버리고 새로운 batis버전의 dao를 만들어줬다.

3. Properties file 생성

file을 만들어주고 거기에 DB 정보를 적어줬다. 

 

driver, url, username, password 정보만 적어주면 된다.

밑에는 JDBC를 사용한 Dao다. 이처럼 Dao에서 driver을 연결하고 계정 연결을 해주고 이런 과정을 해줄 필요가 없어진 것이다.

 

 

4. config.xml 생성

이 파일은 mybatis를 사용하기 전 기본 설정 파일이라고 할 수 있다.

간단하게 DB 접속 경로, mapper 경로 등 을 적어준다.

config.xml의 기본은 이렇다.

일단 이 xml 파일이 mybatis의 설정임을 선언해주고

<configuration>에 정보를 적어주면 된다.

 

1
2
3
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
cs

 

 

5. mapper.xml 생성

mapper.xml 의 기본구성도 이렇다.

이 xml 이 mapper 설정임을 선언해주고 <mapper> 안에 쿼리문을 작성해주면 된다.

1
2
3
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
cs

 

6. getSqlSessionFactory( ) 메소드 작성 파일 생성

Dao에서 mapper의 쿼리에 접근하기 위해선 session 객체가 필요하다. 

session 객체 생성을 위해 sqlsessionfactory를 만들어주고 config.xml 의 정보를 읽어와 만들어준 session에 내용을 담아준다.

 

 

 

7. 원하는 기능에 따라 Dao, Mapper 작성

Dao는 SqlMapConfig를 상속받아 거기서 생성된 session을 통해 Mapper을 참조하고 쿼리문을 실행시킨다. 

 

7-1. 게시글 모두 읽어오기 SelectAll( )

selectAll( )은 게시글 전체를 출력하는 메서드로 결과값은 List로 반환된다. 

결과를 담는 res는 List 변수로 만들어주고 getSqlSessionFactory를 통해 SqlMapConfig에서 미리 생성한 객체 정보를 가져와 session을 만들어준다. 

 

그리고 session은 mapper를 참조해 id가 selectAll인 쿼리문의 값을 res에 받아와준다.

 

mapper로 가서 selectAll 쿼리문을 작성해준다.

 

여기서 중요한건 쿼리문 끝에 ; 를 붙여주면 에러가 뜬다는 것이다.

 

결과는 resultMap타입으로 위에 적어준 bdmap 으로 반환해준다고 적는다.

 

이렇게 하고 실행하면 JDBC를 썼을 때와 같이 잘 실행된다.

 

이렇게 insert문도 update문도 delete문도 적어서 처리하면된다.

 

마이바티스를 사용하면 DAO와 분리해 사용함으로 관리성이 좋다는 장점이 있다. 

 

더 자세한 내용은 마이바티스 홈페이지에서 볼 수 있다.

▷ Mybatis 

MyBatis – 마이바티스 3 | 소개

 

MyBatis – 마이바티스 3 | 소개

Copyright © 2009–2020MyBatis.org. .

mybatis.org

 

반응형

댓글