Spring 부트

23-02-14) 스프링부트 5강 - DB 연결

JadeStone 2023. 2. 14. 15:35

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를 쓸 수 있음.)

 

나중에 궁금하면 공부해보기.

우리는 마이바티스 그냥 쓸것.

 

------------------------------------------------------------------------------------------------------------------------------------------------