커리큘럼(12-30/변경)
01. Java
02. git
03. Database
04. Jsp [Server]
05. HTML,CSS
07. JS
06. 미니프로젝트-2W
08. SpringFramework , SrpingBoot (v)
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)
스프링 부트
데이터베이스 연결(Mybatis)
- 스프링부트의 autoconfig기능은 데이터베이스 연결을 자동 처리
Mybatis-spring-boot-start
를 이용하면 3가지 모듈(mybatis, mybaits-spring, spring-jdbc)를 자동으로 다운로드
Mybatis-spring-boot-start
- 스프링 부트 위에 MyBatis애플리케이션을 빠르게 빌드 할 수 있음
- @Mapper만 사용하여 인터페이스 위치만 알려주면 자동 처리
- application.properties에 데이터베이스 연결 설정이 필수
- MyBatis-Spring-Boot-Starter의 자동처리
- DataSource 자동감지
- SqlSessionFactory 자동생성
- @Mapper 어노테이션을 스캔하고 자동연결
부트에 Mybatis설정
gradle
dependencies {
//생략....
//++데이터베이스 커넥터 필요
//마이바티스
// 스프링부트 버전과 동일하게 버전설정
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
}
application.properties
에 DB연결 추가
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring?serverTimezone=Asia/Seoul
spring.datasource.username=spring
spring.datasource.password=spring
application.properties
# mybatis설정
# 언더바 카멜표기로 맵핑
mybatis.configuration.map-underscore-to-camel-case=true
# 엘리어스로 사용할 패키지명(VO매핑)
mybatis.type-aliases-package=com.simple.basic.command
# SQL mapper위치
mybatis.mapper-locations=classpath:/mapper/**/*.xml
Mybatis 실행 로그기능 추가
- dependency추가
dependencies {
//생략....
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
}
- Database Config변경(application.properties파일)
- 기존 mybatis설정시 추가했던 내용에 log4j 부분 추가
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
- log4jdbc.log4j2.properties 생성 (resource폴더 아래)
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
- logback.xml 생성 (resources폴더 아래)
dbc.sqlonly
: SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다.
jdbc.sqltiming
: SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.
jdbc.audit
: ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다.
jdbc.resultset
: ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남긴다.
jdbc.resultsettable
: SQL 결과 조회된 데이터의 table을 로그로 남긴다.
<?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>