23-02-14) 스프링부트 5강 - DB 연결
5강
1. 데이터베이스연결
2. MyBatis문법
* 마이바티스 스프링 부트 스타터의 자동처리 부분을 보면
@Mapper 어노테이션을 스캔한다고 했음.
그래서 인터페이스에 꼭 @Mapper 어노테이션을 붙여줘야함.
*마이바티스 스프링 부트 스타터는
버젼을 따로 기재해줘야함 .
스프링 부트의 버전을 따라가는게 아니라 독립적인 버전을 갖고 있기 때문.
*스프링부트에서는 인터페이스에 반드시 Mapper 어노테이션을 붙여줘야함.
*개발단계에서 로그를 붙여주기 위해 위와같이 변경을 좀 해줘야함.
그렇지만 운영단계에서는 원상복귀 해줌.
( 위에 빨간 부분들 추가해주고 변경해주면 됨)
* 그레이들 추가
//sql 로그
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
* application.properties (설정파일)
### 데이터베이스 연결, 커넥션 풀 자동연결 ###
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/spring?serverTimezone=Asia/Seoul
spring.datasource.username=spring
spring.datasource.password=spring
########### 마이바티스 관련 설정 ###########
# 매퍼xml의 위치 - classpath:/ 리소스 폴더의 하위를 나타냄.
mybatis.mapper-locations=classpath:/mapper/*.xml
# 단축명으로 사용할 클래스의 패키지명 , VO 클래스를 클래스 이름만으로 참조할 수 있게 해줌.
mybatis.type-aliases-package=com.simple.basic.command
*맵퍼의 인터페이스 파일 위치.
*Mapper.xml ( mapper 구현하는 파일) 위치
* log4jdbc.log4j2.properties 파일
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
★기억하기
properties 파일에는 공백을 넣는거 아님.
공백도 인식이 되기 때문.
*로그의 설정파일만들고 위의 내용 복사붙여넣기.
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-3level %logger{5} - %msg %n</pattern>
</encoder>
</appender>
<logger name="jdbc" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="jdbc.sqltiming" level="DEBUG"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="DEBUG"/>
<logger name="jdbc.connection" level="OFF"/>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
*로그 확인
우리가 원하는 부분이 좀더 보기 편해짐.
----------------------------------------------------------------------------------------------------------------------------------------
* JPA 에 가면 sql문을 안 쓰게 됨.
(하지만 sql 을 알아야 jpa를 쓸 수 있음.)
나중에 궁금하면 공부해보기.
우리는 마이바티스 그냥 쓸것.
------------------------------------------------------------------------------------------------------------------------------------------------