[SQL_응용]마이바티스(mybatis) 프레임워크

예지성준·2024년 5월 23일
0

마이바티스(mybatis) 프레임워크 설치 및 적용

강의자료

1. 설치

mybatis3.xx

의존성 추가
implementation 'org.mybatis:mybatis:3.5.16'

2. 설정

mybatis 사이트

XML설정파일

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

바뀌지 않는 정적자원들 정의

안에 xml 설정 코드 추가해준다.

Mapper 클래스 xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

📌8.실무프로젝트 폴더 - exam01

해당 코드 살펴보기


SqlSessionFactory: SqlSession 객체 생성

  • SqlSessionFactory는 MyBatis의 SQL 세션을 생성하는 팩토리입니다. 이 팩토리는 MyBatis 설정 파일을 기반으로 생성되며, 설정 파일에는 데이터베이스 연결 정보, 트랜잭션 설정, 매퍼 파일 정보 등이 포함되어 있습니다.

  • SqlSessionFactoryBuilder -> 설정 -> SqlSessionFactory 객체 생성

    SqlSession은 MyBatis의 주요 인터페이스 중 하나로, SQL 실행, 트랜잭션 관리, 매퍼 인터페이스 호출 등을 담당합니다. 데이터베이스와의 실제 상호작용을 관리하며, SQL 쿼리 실행 결과를 처리합니다.

  • SqlSession: SQL 구문 실행

    • insert(): 추가
    • delete(): 삭제
    • update(): 수정
    • List<T> selectList(): List 형태로 조회
    • T selectOne()

    getMapper(Class class)
    매퍼 인터페이스
    @Select()
    @Insert()
    @Update()
    @Delete()

3. 적용

4. 동적 SQL

1) if
2) choose, when, otherwise
3) trim, where, set

<trim prefix="WHERE" prefixOverrides="AND |OR ">
  ...
</trim>

prefix="WHERE" : trim 태그 내부에 유효한 조건식이 하나라도 있으면 출력
prefixOverrides="AND |OR " : 가장 앞쪽에 나와있는 (WHERE 바로 뒤) AND 또는 OR제거

<trim prefix="SET" suffixOverrides=",">
  ...
</trim>

suffixOverrices="," -> 마지막 콤마는 제거

trim대신 where조건 가능

trim 대신 SET으로 가능

4) foreach

5) bind
USER_NM LIKE '키워드%': 사용자명이 키워드로 시작하는 패턴
USER_NM LIKE '%키워드': 사용자명이 키워드로 끝나는 패턴
USER_NM LIKE '%키워드%': 사용자명이 키워드가 포함되는 패턴

5. 로그

SLF4J
Slf4j-api: slf4j 가이드라인(인터페이스 위주)
logback-class: 대표적인 구현체

%d: 로그 기록 시점(날짜, 시간)
%p: 로그 레벨 %5p -> 5글자내에서 로그 레벨을 표기
%m: 로그 메시지
%n: 줄개행
%c: 패키지명을 포함한 전체 클래스명

  • %c(2) -> 패키지명은 한자로 축약, 클래스명은 전체 이름
  • 로그레벨

FATAL
ERROR
WARN - 경고(오류X, 문제 소지가 생길 가능성이 있는 경우)
INFO - 일반 정보
DEBUG - 자세한 정보
TRACE - DEBUG보다 더 자세한 정보

profile
꽁꽁 얼어붙은 한강 위로 😺

0개의 댓글