ㄴ 그래들 설정 파일 열기
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32'
마이바티스_기본설정항목
https://mybatis.org/mybatis-3/ko/getting-started.html
이 코드 있으면 xml언어이다
<?xml version="1.0" encoding="UTF-8" ?>
<?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>
커넥션 풀(Connection Pool) : 데이터베이스와의 연결을 효율적으로 관리하기 위해 미리 일정 수의 커넥션을 생성해 두고, 필요할 때마다 이를 재사용하는 기술입니다.
ㄴ pooled : 마이바티스는 이미 커넥션풀이 설정에 들어 있다
마이바티스 변수
<?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>
ㄴ 변수 설정
파일생성
매핑된 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>
ㄴ 매퍼를 설정파일에 등록
ㄴ DB테이블 생성
ㄴ DB 칼럼명과 동일하게 변수를 설정해야 한다
ㄴ 매핑함
ㄴ 연동
List<T> selecList(...)
ㄴ 설정을 가져와서 그걸 바탕으로 세션 팩토리객체 생성
ㄴ 세션팩토리를 통해 세션객체를 생성
ㄴ 기본값 폴스 : 커밋자동으로 안됨
ㄴ 자동 커밋되게 설정함 = 쿼리 수행하자마자 바로 커밋 = 롤백x
ㄴ 폴스로 하면 수동커밋으로 바뀜
ㄴ 이 주소를 통해 맵핑 접근
ㄴ 테스트 파일 생성
ㄴ SqlSession session = DBConn.getSession(); : 자동커밋
ㄴ 쿼리수행
ㄴ 수행 잘 됨
ㄴ 매퍼파일과 동일한 경로 동일한 패키지, 동일한 파일명으로 인터페이스 만들기
ㄴ 구현체는 마이바티스가 만들어 줌
ㄴ 이렇게 해도 나옴
매퍼쪽에 쿼리정의 안해도 아래 애노테이션을 쓰면 구현체 알아서 만들어줌
@Select(...)
@Insert(...)
@Update(...)
@Delete(...)
ㄴ NULL이 나오는 이유 : 명칭 매핑이 안되네
ㄴ 명시해주자
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>
ㄴ %d : 로그 기록 시점(날짜, 시간)
ㄴ %p : 로그 레벨 //%5p : 5글자 내에서 로그레벨표기
ㄴ %m : 로그 메세지
ㄴ %n : 줄개행
ㄴ %c : 패키지명을 포함한 전체 클래스명
%c{2} -> 패키지명은 한자로 축약, 클래스명은 전체이름
FATAL
ERROR
WARN - 경고(오류X, 문제 소지가 생길 가능성이 있는 경우)
INFO - 일반 정보
DEBUG - 자세한 정보
TRACE - DEBUG보다 더 자세한 정보
로그레벨이 에러이면 에러 페이탈만 출력
로그레벨이 인포면 인포 월ㄴ 에러 페이탈 출력됨
ㄴ 빌더 추가
ㄴ 쿼리 수행
ㄴ 22번 추가 됨
ㄴ 인터페이스 정의
ㄴ 여기 가리키는거
ㄴ 모디파이 인터페이스 정의
USER_NM LIKE '키워드%' : 사용자명이 키워드로 시작하는 패턴
USER_NM LIKE '%키워드' : 사용자명이 키워드로 끝나는 패턴
USER_NM LIKE '%키워드%' : 사용자명이 키워드가 포함되는 패턴