5/24 MyBatis 초기세팅

박세현·2024년 5월 24일
0

3차 프로젝트

목록 보기
6/14
post-thumbnail

파일 생성

ㄴ 그래들 설정 파일 열기





인텔리제이 설정

  • 한글깨짐 방지
  • 한글인식 바이트수 변경

의존성 설치

1. ojdbc11 : JDBC드라이버

  • runtimeOnly 'com.oracle.database.jdbc:ojdbc11:23.4.0.24.05'




2. Orai18n : 한글 깨짐 방지

  • implementation 'com.oracle.database.nls:orai18n:23.4.0.24.05'



3. : 마이바티스 프레임워크

  • implementation 'org.mybatis:mybatis:3.5.16'



4. lombok : get, set 메서드 편하게 쓰기

  • compileOnly 'org.projectlombok:lombok:1.18.32'

  • annotationProcessor 'org.projectlombok:lombok:1.18.32'

5. sync클릭




6. 의존성 설치 확인

  • 익스터널 라이브러리 확인하기





마이바티스 설정하기

마이바티스_기본설정항목
https://mybatis.org/mybatis-3/ko/getting-started.html

이 코드 있으면 xml언어이다
<?xml version="1.0" encoding="UTF-8" ?>

1. 마이바티스 설정코드 복사

<?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>



2. 설정파일 만들기

  • resources파일에 파일생성하기
  • 마이바티스 공식사이트에서 설정코드 복사 붙여넣기 하기

커넥션 풀(Connection Pool) : 데이터베이스와의 연결을 효율적으로 관리하기 위해 미리 일정 수의 커넥션을 생성해 두고, 필요할 때마다 이를 재사용하는 기술입니다.

ㄴ pooled : 마이바티스는 이미 커넥션풀이 설정에 들어 있다

마이바티스 변수



1) 변수설정하기

<?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>
    <properties>
        <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
        <property name="usernanme" value="STUDY"/>
        <property name="password" value="oracle"/>
    </properties>
    <environments default="dev">
        <environment id="dev">
            <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>

ㄴ 변수 설정




mapper 설정하기

1. mappers 설정파일 만들기

  • 파일생성

  • 매핑된 SQL 구문 살펴보기

<?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>



2. mappers 설정

  • DML 언어 정의
  • 매퍼는 만들 때 마다 설정파일에 등록해야 함

ㄴ 매퍼를 설정파일에 등록




3. 매핑 실습

ㄴ DB테이블 생성

ㄴ DB 칼럼명과 동일하게 변수를 설정해야 한다

ㄴ 매핑함

ㄴ 연동





SqlSession

  • SqlSessionFactory : SqlSession 객체 생성
    • SqlSessionFactoryBuilder : 설정 -> SqlSessionFactory 객체 생성
  • SqlSession : SQL 구문 실행 = 자바에서 디비 쿼리 수행
    • int insert(...)
    • int delete(...)
    • int update(...)
    • List<T> selecList(...)
    • T selectOne(...)




설정

  • 클래스가 로드 될 때 설정 읽어오기(static)
    = 내부적으로 설정파일 불러오기

ㄴ 설정을 가져와서 그걸 바탕으로 세션 팩토리객체 생성
ㄴ 세션팩토리를 통해 세션객체를 생성

ㄴ 기본값 폴스 : 커밋자동으로 안됨

ㄴ 자동 커밋되게 설정함 = 쿼리 수행하자마자 바로 커밋 = 롤백x
ㄴ 폴스로 하면 수동커밋으로 바뀜





자바에서 쿼리수행

ㄴ 이 주소를 통해 맵핑 접근

ㄴ 테스트 파일 생성
ㄴ SqlSession session = DBConn.getSession(); : 자동커밋
ㄴ 쿼리수행

ㄴ 수행 잘 됨





변수명 바꾸기

  • db의 컬러명을 변수명으로 써야 매핑이 되는걸 바꾸기





자바에서 쿼리수행_인터페이스

  • 접근방식 다르게 만들기
  • 인터페이스 생성

ㄴ 매퍼파일과 동일한 경로 동일한 패키지, 동일한 파일명으로 인터페이스 만들기
ㄴ 구현체는 마이바티스가 만들어 줌

ㄴ 이렇게 해도 나옴

1. 매퍼 인터페이스

  • 매퍼쪽에 쿼리정의 안해도 아래 애노테이션을 쓰면 구현체 알아서 만들어줌

  • @Select(...)

  • @Insert(...)

  • @Update(...)

  • @Delete(...)

ㄴ NULL이 나오는 이유 : 명칭 매핑이 안되네

ㄴ 명시해주자

로그 설정

  • SLF4J
  • slf4j-api : slf4j 가이드라인(인터페이스 위주)
    • logback-class 구현체가 필요
  • 마이바티스(MyBatis)에서 로그는 SQL 쿼리, 파라미터 값, 쿼리 실행 시간, 결과 등의 정보를 기록하여 개발자가 디버깅하고 애플리케이션의 성능을 모니터링할 수 있도록 돕는 중요한 도구입니다. 로그를 통해 데이터베이스와의 상호작용을 추적하고 문제를 발견할 수 있습니다.

implementation 'org.slf4j:slf4j-api:2.1.0-alpha1'

ㄴ 애는 api라 설계만 있음 기능x
-> 이 설계를 참고 해 만든 기능인 logback을 받자

ㄴ 기능인 logback을 설치하자
implementation 'ch.qos.logback:logback-core:1.5.6'

ㄴ 위에 말대로 해주자

ㄴ 파일생성하고 로그 설정코드 넣어주기

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>

  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%5level [%thread] - %msg%n</pattern>
    </encoder>
  </appender>

  <logger name="org.mybatis.example.BlogMapper">
    <level value="trace"/>
  </logger>
  <root level="error">
    <appender-ref ref="stdout"/>
  </root>

</configuration>

1. 로그 패턴

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

2. 로그 레벨

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

로그레벨이 에러이면 에러 페이탈만 출력
로그레벨이 인포면 인포 월ㄴ 에러 페이탈 출력됨

3. 실행

쿼리 수행(빌더)

  • INSERT
  • UPDATE

1. INSERT

ㄴ 빌더 추가

ㄴ 쿼리 수행

ㄴ 22번 추가 됨

2. INSERT

ㄴ 인터페이스 정의

ㄴ 여기 가리키는거

3. UPDATE

4. UPDATE

ㄴ 모디파이 인터페이스 정의

5. DELETE

6. DELETE





동적sql

마이바이타스
https://mybatis.org/mybatis-3/ko/dynamic-sql.html

1. update

1) if

  • 사용자명 바꾸기 = 일부만 수정



2) choose, when, otherwise



3) trim, where, set



4) foreach



5) bind

USER_NM LIKE '키워드%' : 사용자명이 키워드로 시작하는 패턴

USER_NM LIKE '%키워드' : 사용자명이 키워드로 끝나는 패턴

USER_NM LIKE '%키워드%' : 사용자명이 키워드가 포함되는 패턴

profile
귤귤

0개의 댓글

관련 채용 정보