Mybatis와 스프링 연동
-마이바티스는 SQL 매핑 프레임워크로 분류된다.
-전통적인 JDBC 프로그래밍 구조와 비교할때 다음과 같은 장점이 있다.
1) 자동으로 Connection close() 기능
2) mybatis 내부적으로 Preparedstatement 처리
3) #{prop}와 같이 속성을 지정하면 내부적으로 자동 처리
4) 리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리
*그 외에도 기존의 sql을 그대로 사용할수 있고, 진입장벽이 낮은 편이어서 jdbc 대안으로 많이 사용한다.
[사용 구조]
Spring(Mybatis-Spring) <-> Mybatis <-> DB
dependency 추가
-mybatis 3.4.6
-mybatis-spring 1.3.2
핵심객체
-SQLSession // Connection을 생성하거나 원하는 SQL을 전달하고, 결과를 리턴받는 구조로 작성
-SQLSessionFactory // 내부적으로 SQLSession을 만들어냄
<스프링과의 연동 처리>
SQLSession을 이용해서 조금더 편리하게 작업하기 위해서는 MyBatis의 Mapper라는 존재를 작성해줘야 한다.
Mapper // SQL과 그에 대한 처리를 지정하는 역할, XML과 인터페이스 + 어노테이션의 형태로 작성
-root context에 mybatis-spring:scan 추가 java config 의 경우 @MapperScan(basePackages={패키지 경로}) 사용
SQL문을 관리하기 편하게 xml로 관리할수 있음.
*이때, xml파일위치와 xml 파일에 지정하는 namespace 속성이 중요함.
namespace의 경로와 일치하는 이름이 존재하면 병합해서 처리함.
==> 메서드에 대한 선언은 인터페이스, sql에 대한 처리는 xml을 이용하는 방식
속성값 id는 메서드명과 일치, resultType은 인터페이스에 선언된 메서드의 리턴타입과 동일하게 작성함
mybatis는 내부적으로 preparedstatement 방식으로 처리되기 때문에 위치홀더의 값이 ?로 치환되어 처리됨. 따라서 어떤 값으로 처리되었는지 확인하는 기능을 추가해야함.
SQL로그를 보기 위해서 log4jdbc-log4j2 라이브러리 사용
1) 로그 설정파일 추가
=>properteis 파일
2) JDBC 연결 정보 수정
=> driver Class 변경
- log4j.xml에 로그를 jdbc 관련 로거의 value 값을 warn으로 변경
[에러참조]
https://zanywitch.tistory.com/70
-logger 추가시 순서때문에 발생하는에러 root logger가 제일 아래에 위치해야 함.
'Spring' 카테고리의 다른 글
| [Spring] 의존관계 자동주입 (0) | 2022.01.03 |
|---|---|
| 스프링이란? (0) | 2021.11.08 |
| 20210225 (0) | 2021.02.26 |
| 20210224 (0) | 2021.02.26 |
| IntelliJ Mybatis 연동해보기 (0) | 2021.01.03 |