mvn repository
1. ojdbc11
ojdbc11은 Oracle 데이터베이스와 Java 애플리케이션 간의 연결을 위한 JDBC (Java Database Connectivity) 드라이버

Lombok은 어노테이션을 사용하여 자동으로 코드 생성 작업을 처리

mybatis 홈페이지
<?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>
//1) 프로퍼티 추가
<environments default="development">
//만약 내가 기본설정을 해주지 않았다면 이 default값을 토대로 밑의 설정을 따라서 사용한다.
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
//MyBatis는 내장된 기본 커넥션 풀을 사용하여 데이터베이스 연결을 관리
//db에 대한 연결 설정
<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>
1)

environments default id dev로 변경
mapper태그 -> 테이블 만들고 연결해서 쿼리 수헹, 매핑 수행해주는 테이블을 불러옴
main - resources - mappers 디렉토리 - MemberMapper.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">
//nameSpace: resource의 경로
//mapper파일은 DML언어 사용
<mapper namespace="org.mybatis.example.BlogMapper">
//쿼리 정의
//mybatis에게 어떤 네임스페이스의 select태그인지 알려주기 위해 구분할 수 있는 id가 필요
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>

조회커리 태그 select
추가 태그 insert
수정 태그 update
삭제 태그 delete

멤버 객체 만들고 거기에 매핑될수있게 해줘야함
결과값 정의할수있는 클래스 생성
main - java - member 패키지생성 - Member클래스

마이바티스는 getter setter를 반드시 정의해야하기때문에 클래스에 @Data 애노테이션추가
db필드명과 동일하게 작성

select태그에 resultType 추가
알아서 db의 결과를 setter을 통해서 값을 넣어준다

쿼리수행을 하기 위한 객체
SqlSessionFactory객체: sqlSession 객체 생성을 해줌
SqlSession -> SQL구문을 실행함
SqlsessionFactoryBuilder클래스가 존재함 -> 설정을 넣어서 만들면 SqlSessionFactory 객체를 생성할 수 있다.
main java - configs - DBConn

Reader객체 -> 읽어옴
Resource폴더 기준 접근
팩토리빌더 - 설정파일 내용으로 sessionfactory 객체 생성

커밋 자동-수동관리
테스트1

Member클래스 변수명 대문자x 소문자로 쓸수있는 방법으로 사용해보자

현재는 db컬럼과 일치하지않아서 null값 매핑됨

select 타입 바꿔주기 resultMap의 id값 대입


이거로 접근하는게 필수였음

이거 넘 길어서 바꿔줄거임
xml 내용 인터페이스에 정의
main java mappers 패키지 - MemberMapper 인터페이스 생성, xml과 동일명으로 해줘야함
원칙: 동일경로, 동일 패키지, 동일명 사용
Mapper xml의 id값 = 메서드명

getMapper로 정의한거 불러오기 class class가 매개변수임
테스트2



직접 별칭지정
테스트3

어떤 쿼리인지 현재 알 수 x
자세하게 알수있는 로그가 존재
세팅 logImpl 추가
mybatis-config.xml

repository

mybatis홈페이지에서 로깅 설정 예시 복붙
<?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>
logback.xml 파일 만들어서 클래스패스에 두기
main - resources - logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
//콘솔에 출력하겠다.
<encoder>
<pattern>%d %5p %c{2} - %m%n</pattern>
//출력할 패턴
</encoder>
</appender>
<logger name="org.mybatis.example.BlogMapper">
<level value="trace"/> //debug보다 더 자세한 정보
</logger>
<root level="INFO"> //일반정보
<appender-ref ref="stdout"/>
</root>
<logger name="mappers">
<level value="DEBUG"/> //자세한 정보
</logger>
</configuration>
쿼리추가

테스트 클래스 추가

아이디와 동일한명칭의 메서드 만들어서..
인터페이스로 ㄱㄱ

