은은하게 코드 뿌시기

[spring]- Mybatis/마이바티스 본문

웹/spring

[spring]- Mybatis/마이바티스

은은하게미친자 2022. 8. 25. 15:43
728x90

Mybatis

  •  SQL 매핑 프레임워크
  • 자동으로 Connection close 가능
  • MyBatis 내부적으로 PreparedStatement 처리
  • #{prop} 과 같이 속성을 지정하면 내부적으로 자동처리
  • 리턴타입을 지정하는경우 자동으로 객체 생성 및 ResutSet처리

Mybatis 셋업

1. pom.xml 파일에 라이브러리 추가하기

  • spring-jdbc/spring-tx : 데이터베이스 처리와 트랜잭션 처리
  • mybatis/mybatis-spring : Mybatis와 스프링 연동용 라이브러리

2. SQLSessionFactory / SqlSessionTemplate 

  • SQLSessionFactory : 내부적으로 sqlSession을 만들어냄, SQLSession을 통해서 Connection을 생성하거나 SQL을 전달하고 결과를 리턴 받는다.
  • SqlSessionTemplate  : SqlSession을 구현하고 코드에서 SqlSession를 대체하는 역할을 한다. SqlSessionTemplate 은 쓰레드에 안전하고 여러개의 DAO나 매퍼에서 공유할수 있다.
  • root-context.xml에  SqlSessionFactoryBean, SqlSessionTemplate 을 추가하여 spring연동

3. Mapper

  • Mapper : SQL처리를 지정하는 역할 
  • root-context.xml의 Namespaces 항목에서 mybatis-spring 항목을 선택
  • 실질적인 mapper.xml파일에서  namespace 설정 : 패키지.매퍼파일 ex )) <mapper namespace="kr.co.dong.boardMapper">  
  • root-context.xml 에서 베이스 패키지 설정도 가능  <mybatis-spring:scan base-package=""/>  : 지정된 패키지의 모든 mybatis 관련 어노테이션을 찾아서처리
  • 자바로 매퍼 작성/xml로 매퍼 작성하는 방법이 있음 xxxMapper 의 네이밍을 추천, 경로는 root-context.xml에 참고 하여 작성한다. classpath 는 src와 resource순으로 찾는다 (src/main/resources 추천)
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.co.dong.boardMapper">
    <!--글 전체 목록 보기-->
    <select id="list" resultType="BoardDTO">
        select * 
        from board 
        where del = 0
        order by bno desc
    </select>
</mapper>
cs

 + mapper 작성시 유의사항.

  • id값을 메서드의 이름과 동일하게 할것
  • select 의경우 resultType 속성을 가지는데 이값은 인터페이스에 선언된 메서드이 리턴타입과 동일하게 작성 할것
  • 쿼리 작성시 세미콜론을 꼭 뺄것
  • 마이바티스에서는 DB의 한행을 객체로 보기 때문에 한행을 resultType의 객체를 자동으로 List<객체> 화 하여 리턴해준다.

예제 참고.


4. DB 로그 설정하기 - Log4j

Log4j 셋업 방법 참고 : 

https://leggo.tistory.com/110

 

log4j - DB로그 설정하기 dataSourceSpied

1. pom.xml 1 2 3 4 5 6 7 8 9 10 11 12 13                             com.googlecode.json-simple             json-simple             1.1.1       ..

leggo.tistory.com

로그 레벨 설정하기

: 출력 되는 로그를 조절 하고 싶다면 log4j.xml 에서 설정하능하다

기본설정은 info레벨 이기때문에 warn과같이 좀더 높은 레벨의 로그만 기록하게 수정하면 테스트 코드를 실행할때 로그의 양을 조절 할 수있다.

 

로그 레벨 종류

  • ALL : 모든로깅
  • TRACE : 세밀
  • DEBUG : 디버깅
  • INFO : 강조정보
  • WARN : 경고
  • ERROR : 오류
  • FATAL : 심각한 오류
  • OFF : 로깅 해제
728x90
Comments